Изглежда, че имате нужда от FULL OUTER JOIN
и изключва обща част. Можете да го симулирате с:
SELECT T1.col_nameFROM T1 LEFT JOIN T2 ON T1.col_name =T2.col_nameWHERE T2.col_name IS NULLUNIONSELECT T2.col_nameFROM T2 LEFT JOIN T1 ON T1.col_name =T2.col_name WHERE T1.col_name IS NULL;код>
<предварителен код>╔══════════╗║ име на колона ║╠══════════╣║ C ║║ D ║║ E ║║ F ║║ G ║ ═════════╝ Повече информация:Визуално представяне на SQL съединения
SELECT FROM Table_A AFULL OUTER JOIN Table_B BON A.Key =B.KeyWHERE A.Key IS NULL OR B.Key IS NULL
За съжаление MySQL
не поддържа FULL OUTER JOIN
така че използвах обединение на 2 LEFT JOIN
.
Допълнение
Можете лесно да го разширите с допълнителни колони.
SELECT 'T1' AS tab_name, T1.col_name, T1.col1, NULL AS col2FROM T1LEFT JOIN T2 ON T1.col_name=T2.col_name WHERE 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 IS NULL;
Изход:
<предварителен код>╔══════════╦══════════╦══════╦════════════ ═══════╗║ tab_name ║ col_name ║ col1 ║ col2 ║╠══════════╬══════════╬══════╬═══ ══════════════════╣║ T1 ║ C ║ 3 ║ ║║ T1 ║ D ║ 4 ║ ║║ T2 ║ E ║ 03 ║0:0 20 00 ║║ T2 ║ F ║ ║ 2016-01-02 00:00:00 ║║ T2 ║ G ║ ║ 2016-01-01 00:00:00 ║╚════════╩␕␕ ════════╩══════╩═════════════════════╝