OUTER JOIN 使用 IN 列表?

Shi*_*Dev 5 sql sql-server

我想仅使用项目列表来查找表中的命中和未命中,而不必创建新表来包含列表项并且不使用任何脚本。我一整天都在做很多临时查询,所以这很有用。

这是我现在使用的示例:

SELECT custid, name, email  
FROM customers  
WHERE custid IN  
('1111', '2222', '3333', '4444')  
Run Code Online (Sandbox Code Playgroud)

这将返回客户表中的所有条目,其中客户 ID 与我提供的列表中的条目相匹配。

我想找到一种方法来返回像 OUTER JOIN 这样的结果,在那里我可以看到匹配和未命中。

仅供参考:我正在使用 MS SQL Server,但能够在 mySQL 中执行此操作也很有用。谢谢!

Ray*_*Ray 2

使用用户定义的函数从逗号分隔的值列表生成表。然后您可以对列表进行外连接,如下所示:

select customers.custid, name, email
  from customers
    left outer join dbo.get_id_table('1111', '2222', '3333', '4444') as ids
      on (customers.custid = ids.custid)
Run Code Online (Sandbox Code Playgroud)

这里和网络上的其他地方发布了“get_id_table”类型函数的多个版本(抱歉 - 我现在无法提供链接)。