我必须编写一个LEFT JOIN
查询来查找确实存在于一个表中并存在于另一个表中的记录(左连接的标准用途)。此表中只有一张表用于连接。
表名:products
加入条件栏:prdname
两个where子句条件:subdivision='abc', subdivision='xyz'
客观的
使用这两个 where 子句,我将得到两个包含两组 prdname 的结果,我必须找到在一个中存在但在另一个中不存在的 prdname。
当我编写标准时LEFT JOIN
(下面的案例 2),它没有给出任何不正确的结果,所以我编写了一个子查询来检查结果。这是 8 条记录,所以我决定在这里将查询修改为 case1,并且它起作用了。
我的疑问是它们两者几乎相同,那么为什么第二个不正确?
谁能帮我?
此外,abc
并且xyz
是随机值,所以非常关心它们。
它工作的案例:
SELECT a.prdname
FROM products a
LEFT OUTER JOIN (SELECT prdname
FROM products
WHERE subdivision = 'xyz') b
ON a.prdname = b.prdname
WHERE a.subdivision = 'abc'
AND b.prdname IS NULL
不工作的情况
SELECT DISTINCT( a.prdname )
FROM products a
LEFT OUTER JOIN products b
ON a.prdname = b.prdname
WHERE a.subdivision = 'abc'
AND b.subdivision = 'xyz'
AND b.prdname IS NULL
要测试的子查询查询
SELECT DISTINCT( prdname )
FROM products
WHERE subdivision = 'abc'
AND prdname NOT IN (SELECT DISTINCT prdname
FROM products
WHERE subdivision = 'xyz')