这是场景...
表客户端
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/