微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL选择返回默认值如果为空

数据库:MS sql 2008
SELECT Listing.Title,Listing.MLS,Pictures.PictureTH,Pictures.Picture,Listing.ID 
FROM Listing INNER JOIN Pictures ON Listing.ID = Pictures.ListingID
WHERE (Pictures.ID = (SELECT MIN(ID) FROM Pictures WHERE (ListingID = Listing.ID)))

问题是,我有几个没有图片的“列表”,并且由于这个sql脚本,它们没有出现。我怎样才能让他们出现?

如果值为null,也可以给Pictures.Picture Column一个值“default.jpg”?我很失落,所以如果有人可以提供帮助,那就太棒了。对不起,如果我问的问题也很糟糕,我不明白如何真正地问我需要它做什么。但是要求更多细节,我会发布它们。

每个清单可以拥有用户想要的尽可能多的图片,我需要这个脚本来显示清单,即使它没有图片

阶段2

谢谢你们。到目前为止,我正在学习一些我从未知道的新命令。现在的问题是它为列表中的每张图片返回一行。但认图像效果很好。

SELECT Listing.Title,coalesce(Pictures.PictureTH,'../default_th.jpg') as PictureTH,coalesce(Pictures.Picture,'../default.jpg') as Picture,Listing.ID FROM Listing LEFT
OUTER JOIN Pictures ON Listing.ID = Pictures.ListingID

我怎样才能获得它,因此每个ListingID只返回1行?

解决方法

两件事情:

>使用左外连接而不是内连接来获取所有列表,即使丢失了图片
>使用coalesce应用认值

SELECT Listing.Title,'default.jpg') as Picture,Listing.ID  
FROM Listing 
LEFT OUTER JOIN Pictures 
    ON Listing.ID = Pictures.ListingID

编辑限制为一行:

SELECT Listing.Title,Listing.ID  
FROM Listing 
LEFT OUTER JOIN Pictures 
    ON Listing.ID = Pictures.ListingID 
WHERE Pictures.ID is null
OR Pictures.ID = (SELECT MIN(ID) 
    FROM Pictures 
    WHERE (ListingID = Listing.ID)))

原文地址:https://www.jb51.cc/mssql/84450.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐