我想只使用一个项目列表来查找表中的命中和未命中,而不必创建一个新表来包含列表项目并且不使用任何脚本。我一整天都会做很多临时查询,所以这很有用。
这是我现在使用的示例:
SELECT custid, name, email
FROM customers
WHERE custid IN
('1111', '2222', '3333', '4444')
这将返回客户表中客户 ID 与我提供的列表中匹配的所有条目。
我想找到一种方法来返回像 OUTER JOIN 这样的结果,在那里我可以看到匹配项和未命中项。
仅供引用:我正在使用 MS SQL Server,但能够在 mySQL 中执行此操作也会很有用。谢谢!
最佳答案
有几种方法可以做到这一点。这里有两个:SELECT C1.custid, name, email, C2.CustID As Match
FROM customers As C1 left join (SELECT custid
FROM customers
WHERE custid IN
('1111', '2222', '3333', '4444')) As C2 on C1.custid=C2.custid
如果它是其中一个数字,则匹配列中将有一个数字(4 个之一)。或者:SELECT custid, name, email, Case When custid in ('1111', '2222', '3333', '4444') Then 'Match' Else '' End As IsMatch
FROM customers
如果它是四个值之一,则 IsMatch 列将显示“匹配”。
第二个通常会更快。
关于sql - 使用 IN 列表进行外部连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2072688/