2017-11-06 3 views
0

Ich habe zwei Tabellen.Ersetzen, wenn Element aus anderen Tabelle vorhanden sind sqlite3

Tabelle: gender_age_train

index  Unnamed: 0 device_id    gender  age   group  phone_brand 
    ---------- ---------- -------------------- ---------- ---------- ---------- ----------- 
    1   0   -8076087639492063270 M   35   M32-38  小米   
    2   1   -2897161552818060146 M   35   M32-38  小米   
    3   2   -8260683887967679142 M   35   M32-38  小米   
    4   3   -4938849341048082022 M   30   M29-31  小米   
    5   4   245133531816851882 M   30   M29-31  小米   
    6   5   -1297074871525174196 F   24   F24-26  OPPO  
    7   6   236877999787307864 M   36   M32-38  酷派   
    8   7   -8098239495777311881 M   38   M32-38  小米   
    9   8   176515041953473526 M   33   M32-38  vivo  
    10   9   1596610250680140042 F   36   F33-42  三星 

Tabelle: chinese_latin_translation

index  chinese  latin_brands 
---------- ---------- ------------ 
1   三星   samsung  
2   天语   Ktouch  
3   海信   hisense  
4   联想   lenovo  
5   欧比   obi   
6   爱派尔   ipair  
7   努比亚   nubia  
8   优米   youmi  
9   朵唯   dowe   
10   黑米   heymi 

Wie kann ich die phone_brand aus der Tabelle zu ersetzen gender_age_train, wenn die Marke existiert in chinesischen Buchstaben mit der Übersetzung aus der Säule latin_brands?

Ich möchte nicht die komplette Spalte ersetzen, nur die Zeile, wenn eine Übersetzung verfügbar ist.

Der Datensatz hat mehr als 1 Million Zeilen. Die wichtigen Säulen in diesem Fall sind nur die phone_brand und die latin_brands

Beispiel Abfrage:

SELECT latin_brands, phone_brand FROM gender_age_brand_train LEFT JOIN chinese_latin_translation on gender_age_brand_train.phone_brand = chinese 
+0

Hinweis: 'LEFT JOIN'. –

+0

Ich habe versucht, viele Versionen der linken beitreten, aber ich weiß nicht, wie Sie die Spalte ersetzen oder aktualisieren. Weil nicht jedes Element in der Spalte 'phone_brand' eine Übersetzung hat. @GordonLinoff –

+0

. . Sie sollten eine Beispielabfrage in die Frage aufnehmen. –

Antwort

0

ein left join Gebrauch zwischen: chinese_latin_translation und gender_age_train

select 
    A.index, 
    A.Unnamed, 
    A.device_id, 
    A.gender, 
    A.age, 
    A.group, 
    coalesce(B.latin_brands,A.phone_brand) as brand 
from 
    gender_age_train A 
    left join chinese_latin_translation B on 
     A.phone_brand= B.chinese  
0

sollte dies mit Ihrem erf passen, Inner mit Update verbinden Zeile

UPDATE T2 
SET T2. Name = T1 .Name 
FROM gender_age_train as T2 INNER JOIN Table1 as T1 
ON  T1. Id = T1 .Id; 

Jetzt können Sie Ihre Abfrage einstellen.

Verwandte Themen