如果表a中没有从表b中选择字段,则从表a中选择字段

时间:2013-06-05 21:44:46

标签: sql join

SELECT a.amount, CASE When d.name <> NULL Then d.name Else c.name End As 'name'
from a
JOIN b on a.id= b.id
LEFT JOIN c on a.tokenId = c.tokenId 
LEFT JOIN d on a.tokenId  = d.tokenId 

我正在尝试从表d中选择名称(如果存在),如果不存在,请从表c中选择它。 name字段返回NULL,但我知道它们在任一表中都不为空。

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

您无法使用<>运算符与null进行比较。使用is运算符:

SELECT a.amount, CASE When d.name is not null Then d.name Else c.name End As 'name'

您还可以使用coalesce功能:

SELECT a.amount, coalesce(d.name, c.name) As 'name'

答案 1 :(得分:1)

使用COALESCE:

SELECT a.amount, COALESCE(d.name,c.name) "name"
from a
JOIN b on a.id= b.id
LEFT JOIN c on a.tokenId = c.tokenId 
LEFT JOIN d on a.tokenId  = d.tokenId