SQL - 从两个不同的表中选择行

3

有了这张表格

Table "Items"

itemID
itemTitle
itemContent

并且这个

Table "MyList"

userID
itemID
deleted

如何选择表“Items”中的所有行,并显示字段“deleted”,即使itemID在“MyList”中不存在,也要给定userID?

查询结果示例:

itemID | itemTitle | deleted | userID
-------------------------------------
1      | Title1    | 1       | 2
2      | Title2    | 0       | 2
3      | Title3    | (null)  | (null)
4      | Title4    | (null)  | (null)

我该如何查询才能得到这个结果?

谢谢。

3个回答

16
SELECT I.itemID, I.itemTitle, M.deleted
FROM
    Items I
    LEFT OUTER JOIN MyList M ON M.itemID = I.itemID
WHERE M.userID = 9

编辑:根据OP的评论:

SELECT I.itemID, I.itemTitle, M.deleted, M.userID
FROM
    MyList M
    LEFT OUTER JOIN Items I ON I.itemID = M.itemID
WHERE M.userID = 9

0

您可以使用 外连接

select a.itemId, a.itemTitle, b.deleted
from Items a left outer join MyList b
on a.itemId = b.itemId

0

我不确定这是否是最好的方法,但它返回了我要找的内容:

select itemID, itemTitle, deleted, userID
FROM(
SELECT i.id_itemID, i.itemTitle, M.deleted, M.userID
FROM
    MyList M
    right OUTER JOIN Items I ON I.itemID= M.itemID
) as MyTableItems
where itemID = 3 or itemID is null

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接