sql - 我可以在 SQL 中执行 "conditional"连接吗

标签 sql db2

这是场景...

表客户端

CLIENT     NAME
------     ----
123        Smith
456        Jones

表 CLIENT_ADDRESS

CLIENT     ADDRESS
------     -------
000        100 MAIN ST  (this is a default address)
123        999 ELM ST

我希望我的结果集看起来像这样...

CLIENT     NAME     ADDRESS
------     ----     -------
123        Smith    999 ELM ST
456        Jones    100 MAIN ST   (pulls the default address since none found for client)

我可以在一次连接中完成此操作吗?

显然这个连接

SELECT A.CLIENT, A.NAME, B.ADDRESS
FROM CLIENT A
LEFT OUTER JOIN CLIENT_ADDRESS B
ON A.CLIENT = B.CLIENT

不会返回客户端 456 的默认地址。

我将如何改变这个连接来实现这一点?

最佳答案

不是在单个连接中,而是在两个连接中,并且合并

SELECT A.CLIENT, A.NAME, 
   coalesce(b.ADDRESS, d.Address) Address
FROM CLIENT A
    LEFT JOIN CLIENT_ADDRESS B
        ON A.CLIENT = B.CLIENT
    LEFT JOIN CLIENT_ADDRESS D
        ON d.CLIENT = '000'

关于sql - 我可以在 SQL 中执行 "conditional"连接吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22100896/

相关文章:

mysql - Mysql View 查询无法正常工作

java - 如何抑制列表中已有的 jt400?

sql - 将 select 中的 db2 列名转换为 json 文件中的小写

SQL在一个查询中插入2个表

mysql - 具有多个条件的复杂 SQL 查询

SQL 服务器查询以查找仅包含特殊字符的值?

c# - C#调用AS400程序,从QTEMP中选择文件

Java - DB2 性能改进

mysql - 在多个表中快速搜索特定数据,然后引用主表

java - com.microsoft.sqlserver.jdbc.SQLServerException : Connection timed out (Read failed)