Table 1: ABC table 2: PQR
code|Name|Amount code|Name|Amount
----+----+----- ----+----+------
1 | A | 1000 1 | A | 1000
2 | B | 2000 2 | B | 2000
3 | C | 4000
4 | D | 1000
表2中的数据是基于表1的数据插入,现在通过按下名为“Remaining”的按钮我想显示表2中不存在的数据,以了解我错过了从表1填写的元组我怎么能这样做?
答案 0 :(得分:3)
此答案假定您要查找第一个表中第二个表中尚未存在的所有记录。一个选项使用左连接:
SELECT t1.*
FROM ABC t1
LEFT JOIN PQR t2
ON t1.code = t2.code AND t1.Name = t2.Name AND t1.Amount = t2.Amount
WHERE t2.code IS NULL;
我们也可以使用EXISTS
:
SELECT t1.*
FROM ABC t1
WHERE NOT EXISTS (SELECT 1 FROM PQR t2
WHERE t1.code = t2.code AND t1.Name = t2.Name AND
t1.Amount = t2.Amount);
答案 1 :(得分:3)
如果2个表中的字段完全相同且顺序相同?
但是你可以把这些字段放在SQL中吗?
然后你也可以使用EXCEPT
SELECT * FROM ABC
EXCEPT
SELECT * FROM PQR;
如果您不确定这些字段的顺序是否相同? 然后在SQL中列出它们 这样做的好处是,当其中一个表被更改时,SQL可能仍然可以工作。
SELECT [code], [Name], [Amount] from ABC
EXCEPT
SELECT [code], [Name], [Amount] FROM PQR;
它过滤掉与ABC中的PQR记录完全相同的PQR记录。
但通常情况下,Tim Biegeleisen所展示的方法更常用。