sql >> Database teknologi >  >> RDS >> Mysql

Kombiner to tabeller, udelad de samme poster

Det ser ud til, at du har brug for FULD YDRE JOIN og udelukke fælles del. Du kan simulere det med:

VÆLG T1.col_nameFRA T1 VENSTRE JOIN T2 PÅ T1.col_name =T2.col_name HVOR T2.col_name ER NULLUNIONSELECT T2.col_nameFRA T2 LEFT JOIN T1 PÅ T1.col_name =T2.col_nameWHERE IS T1.col_name; 

SqlFiddleDemo

╔══════════╗║ col_name ║╠════════════════╗║ col_name ║╠══════════════╣║ C ║║ ═════════╝

Mere info:Visuel repræsentation af SQL-joins

VÆLG FRA Tabel_A AFULD YDRE JOIN Table_B BON A.Key =B.KeyWHERE A.Key IS NULL OR B.Key IS NULL 

Desværre MySQL understøtter ikke FULD YDRE JOIN så jeg brugte forening af 2 LEFT JOIN .

Tillæg

Du kan nemt udvide det med yderligere kolonner.

VÆLG 'T1' AS tab_name, T1.col_name, T1.col1, NULL AS col2FROM T1LEFT JOIN T2 ON T1.col_name=T2.col_nameWHERE T2.col_name IS NULLUNIONSELECT 'T2' AS tab_name, T2.col_name, NULL, T2.col2FROM T2LEFT JOIN T1 ON T1.col_name=T2.col_name WHERE T1.col_name ER NULL; 

LiveDemo

Output:

╔══════════╦══════════╦═════════╦══════════╦══════════════════════ ═══════╗║ tab_name ║ col_name ║ col1 ║ col2 ║╠══════════╬══════════╬══════╬═══ ══════════════════╣║ T1 ║ C ║ 3 ║ ║║ T1 ║ ║ 0 2 00 ║║ T2 ║ F ║ ║ 2016-01-02 00:00:00 ║║ T2 ║ G ║ ║ 2016-01-01 00:00:00 ║═══════════ kode

  1. Hvad er hurtigere/bedre at bruge:MySQL- eller PHP md5-funktionen?

  2. Postgres:Ryd hele databasen før genskabelse/genudfyldning fra bash-script

  3. Kan du bruge Microsoft Entity Framework med Oracle?

  4. Erstat null-værdi med tidligere tilgængelig værdi i Row SQL-serverforespørgsel