执行以下操作的最有效SQL查询是什么?

时间:2015-04-08 03:26:37

标签: sql

执行以下操作的最有效SQL查询是什么?

以下是在ItemID上加入的两个表:

Item {ItemID,OtherData}

爱{ItemID,用户名}

我传入一个" someuser"作为查询中的用户名。

查询应返回ItemID,OtherData和一个布尔值,表示是否存在对ItemID的爱。

3 个答案:

答案 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,您可以测试该条件作为您的布尔值。