【发布时间】:2018-05-10 20:53:08
【问题描述】:
我正在处理来自我们分销商的内容,他们的数据库文件并不是世界上最好的。所以,我正在尽我所能,用我所拥有的。
我有两张桌子,HLItems 和 HLImages。
我需要从HLItems 退回所有产品。对于不存在的行,我需要显示一条消息。
- 如果存在 = '封面'
- 如果不存在 = '无封面'
这是我尝试过的,但它不起作用。它返回所有记录,即使是 NULL 行,也会显示“封面”。
封面是记录存在时显示在记录中的内容。否则,什么都没有。
使用右外连接
SELECT
(CASE
WHEN EXISTS (SELECT TOP 1 HLImages.Caption
FROM HLImages
RIGHT OUTER JOIN HLItems ON HLImages.ItemNo = HLItems.ItemNo)
THEN 'Front Cover'
ELSE 'No Cover'
END) AS thumbnail,
Title, ItemNo, InternetCategoryID
FROM
HLItems
WHERE
(InternetCategoryID = 11)
只选择列
SELECT
(CASE
WHEN EXISTS (SELECT TOP 1 Caption
FROM HLImages
WHERE Caption = 'Front Cover')
THEN 'Front Cover'
ELSE 'No Cover'
END) AS thumbnail,
Title, ItemNo, InternetCategoryID
FROM
HLItems
WHERE (InternetCategoryID = 11)
这样的事情,是预期的。 (ItemNo 和 Caption.. 为简单起见如下所示)
297110 - 封面
297110 - 空
49043128 - 封面
49014741 - 空
50563362 - 封面
50301310 - 空
【问题讨论】:
-
能否请您显示数据和所需的结果。只是想得到问题的正确翻译
-
maSTAShuFu,更新信息
标签: sql sql-server sql-server-2008