设计一个查询来显示不相等的行

Design a query to display rows that are not equal

我有2张桌子

Table 1:

Table 2:

我希望我的查询以这种格式显示 2 个表之间不常见的所有行:

预期结果:

如有任何想法,我们将不胜感激! 我尝试按照之前的建议使用 UNION,但它没有给出我想要的结果。

我无法在 1 个查询中执行此操作,但我可以在多个查询中执行!!

首先,创建一个联合查询 (Query1),将 table 1 中未出现在 table 2 中的项目与 table 2 中未出现的项目组合起来未出现在 table 1. 您的 SQL 应该如下所示:

SELECT T2.ID
FROM Table2 T2 LEFT JOIN Table1 T1 ON T2.[ID] = T1.[ID]
WHERE (((T1.ID) Is Null))
UNION SELECT T1.ID
FROM Table1 T1 LEFT JOIN Table2 T2 ON T1.[ID] = T2.[ID]
WHERE (((T2.ID) Is Null));

您的第二个查询 (Query2) 然后基于此查询,连接到 Table1 和 Table2,显示查询中的所有记录以及 ID 匹配的这些 table 中的任何记录。您的 SQL 应如下所示:

SELECT Q1.ID, T1.holiday AS H1, T2.Holiday AS H2
FROM Table2 T2 RIGHT JOIN (Table1 T1 RIGHT JOIN Query1 Q1 ON T1.ID = Q1.ID) ON T2.ID = Q1.ID;

接下来,根据表1和表2创建联合查询(Query3):

SELECT T1.ID FROM Table1 T1
UNION SELECT T2.ID FROM Table2 T2;

然后基于Query3 创建第四个查询(Query4),连接到Table1 和Table2,其中Table1.Holiday<>Table2.Holiday:

SELECT Q3.ID, T1.holiday AS H1, T2.Holiday AS H2
FROM Table2 T2 RIGHT JOIN (Table1 T1 RIGHT JOIN Query3 Q3 ON T1.ID = Q3.ID) ON T2.ID = Q3.ID
WHERE T1.Holiday<>T2.Holiday

最后,在 Query2 和 Query4 上构建联合查询:

SELECT ID, H1, H2 FROM Query2
UNION SELECT ID, H1, H2 FROM Query4

这应该会给你你想要的输出:

虽然 SQL 中可能有更简单的方法......

此致,