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,但我知道它们在任一表中都不为空。
任何人都可以帮我解决这个问题吗?
答案 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