我有itemslists表,分别存储项目和列表。我正在尝试检索由url标识的特定列表中的所有项目。 urllists中的唯一键。

SELECT
    items.item_name,
    items.position,
    items.checked,
    lists.list_name
FROM
    items
JOIN lists
WHERE
    items.list_id=lists.list_id AND lists.url=?
ORDER BY items.position


这可行,但我想区分一种情况


lists.urllists中不存在,并且
它存在于lists中,但该列表不包含任何项目。


当前,此查询在这两种情况下都返回一个空集。在一个查询中执行此操作的好方法是什么?

最佳答案

选择listsLEFT JOIN items

SELECT items.item_name,
       items.position,
       items.checked,
       lists.list_name
FROM lists
LEFT JOIN items ON items.list_id=lists.list_id
WHERE lists.url=?
ORDER BY items.position


如果列表存在但没有项目,您将获得单行。项目字段将为NULL

关于mysql - 如果另一个表中不存在MySQL,则返回不同的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18734241/

10-11 08:02