设计一个查询来显示不相等的行
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 中可能有更简单的方法......
此致,
我有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 中可能有更简单的方法......
此致,