执行以下操作的最有效SQL查询是什么?
以下是在ItemID上加入的两个表:
Item {ItemID,OtherData}
爱{ItemID,用户名}
我传入一个" someuser"作为查询中的用户名。
查询应返回ItemID,OtherData和一个布尔值,表示是否存在对ItemID的爱。
答案 0 :(得分:1)
SELECT I.ItemID, I.OtherData, CASE WHEN L.ItemID IS NULL THEN 0 ELSE 1 END AS Loved FROM Item I LEFT JOIN Love L ON I.ItemID = L.ItemID
停止改变您的要求!
答案 1 :(得分:1)
尝试这样的事情:
SELECT Item.*
,CASE WHEN t.ItemID IS NOT NULL THEN 'YES' ELSE 'NO' END AS flag
FROM Item LEFT JOIN (SELECT DISTINCT ItemID FROM Love WHERE Username = someuser) t
ON Item.ItemId = t.ItemId
答案 2 :(得分:0)
SELECT i.ItemID, i.OtherData
FROM Item as i
INNER JOIN Like as l ON i.ItemID = l.ItemID
WHERE Like.Username = {someuser}
如果没有Like for ItemID,那么i.ItemID将为NULL,您可以测试该条件作为您的布尔值。