0
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 中选择它。名称字段返回为 NULL,但我知道它们在任何一个表中都不为空。

谁能帮我解决这个问题?

4

2 回答 2

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'
于 2013-06-05T21:48:15.243 回答
1

使用合并:

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 
于 2013-06-05T21:48:26.630 回答