Left Join Where子句 - 如何在null时返回默认值

时间:2015-03-18 02:57:28

标签: sql-server default

我尝试在没有返回结果时获取默认值。我正在使用的示例是将表1连接到表2其中userid = 1.正如您所见,特德在表2中没有照片。

我没有在sql server中返回任何内容,而是希望它返回No Photo Found。

这是我正在使用的代码,但它不会返回默认值。

SELECT 
  ISNULL(photoName, 'No Photos Found') as photoName 
FROM usertable
LEFT OUTER JOIN
phototable
ON
usertable.id= phototable.id
WHERE userID = 1

用户表

Id | User
0  | Jack

照片表

ID | Photo
0  | me.jpg

2 个答案:

答案 0 :(得分:1)

我会使用coalesce()

SELECT coalesce(p.photoName, 'No Photos Found') as photoName
FROM usertable u LEFT OUTER JOIN
     phototable p
     ON u.id = p.id
WHERE u.userID = 1

答案 1 :(得分:1)

您的粘贴查询中有一个小错字:

as (photoName

应该是:

as photoName

SELECT 
  ISNULL(photoName, 'No Photos Found') as photoName, 
FROM usertable
LEFT OUTER JOIN
phototable
ON
usertable.id= phototable.id
WHERE userID = 1;

除了您的代码看起来不错外,您是否拥有真实数据而不是发布的数据,因为它很可能是数据/架构问题。

在您的示例数据中,您可以调用列照片而不是光子照片。