Mysql 如何查找没有其他表数据的ID

Mysql 如何查找没有其他表数据的ID,mysql,sql,outer-join,Mysql,Sql,Outer Join,我正在尝试编写一个查询,它将调出表中没有特定数据的ID。目前,我们正在尝试查找属于某个表但缺少数据的人 例如,我们希望确保每个人都拥有这三个项目 表1 项目编号 项目1 项目2 项目3 我们在下表中有这个 表2 ID。。项目编号 一,。。项目1 一,。。项目2 一,。。项目3 二,。。项目1 二,。。项目2 3。。项目1 等等。您可以看到ID2缺少表中的项目3,我想提取一个元组,在查询中显示2,项目3 到目前为止,我有类似的东西 SELECT DISTINCT b.ID, a.item

我正在尝试编写一个查询,它将调出表中没有特定数据的ID。目前,我们正在尝试查找属于某个表但缺少数据的人

例如,我们希望确保每个人都拥有这三个项目

表1 项目编号

  • 项目1

  • 项目2

  • 项目3

我们在下表中有这个

表2 ID。。项目编号

  • 一,。。项目1

  • 一,。。项目2

  • 一,。。项目3

  • 二,。。项目1

  • 二,。。项目2

  • 3。。项目1

等等。您可以看到ID2缺少表中的项目3,我想提取一个元组,在查询中显示2,项目3

到目前为止,我有类似的东西

SELECT DISTINCT b.ID, a.item
    FROM TABLE1 a
        LEFT OUTER JOIN TABLE2 b
            ON a.ITEM_ID=b.ITEM_ID
WHERE b.ITEM_ID is NULL

我一直在尝试写一些东西,可以从中提取项目ID。有些ID缺失,但到目前为止没有任何效果。

如果表2中有完整的ID列表,则可以使用该列表,但如果没有,则可以使用此列表:

SELECT ft.* 
FROM TABLE2 t2 RIGHT OUTER JOIN
(SELECT b.ID, a.ITEM_ID
  FROM TABLE1 a
    CROSS JOIN (SELECT DISTINCT ID FROM TABLE2) b) ft
      ON t2.id = ft.id AND t2.item_id = ft.item_id
WHERE t2.id IS NULL


我做了一个
交叉连接
,得到所有可能的组合应该是什么的列表,然后从表中选择缺少的组合

table2.ID是否引用了另一个表?如果我理解得很好,您试图从表1中检索数据,其中表2中缺少项ID,并将每个项ID与表2中的正确ID关联。也许我需要更多的信息,但是在表2中查找缺少的条目id是非常容易的,但是我想知道如何将缺少的条目id与表2中的正确id关联起来。作为示例,您如何知道表2中的项目3与id 2相关?要进行查询,您必须首先能够回答此问题。您好。“表中没有特定数据”是什么意思?什么时候会出现id数据“丢失”的情况?当它没有具有表1中的值的行时?你没有清楚地解释你想要什么&你没有展示一个输入和期望输出的例子。你只是提出了一个错误的问题。请阅读并采取行动。它不是B.ItMySID,而不是A.ItMySID在第6行?@ MatthewI请考虑点击复选标记图标来“接受”这个答案,以显示它是最有用的。你和回答者都会得到声誉分数。OP可能会注意到,从来没有人使用正确的连接-通常认为这种替代方法更容易让人理解:
SELECT a.ID, b.item_id
FROM (SELECT DISTINCT ID FROM Table2) AS a 
-- or TableX AS a -- if you have a TableX with the unique ID values used for Table2 
CROSS JOIN Table1 AS b
-- or (SELECT DISTINCT item_id FROM Table2) AS b -- if Table1 was not available
LEFT JOIN Table2 AS c ON a.ID = c.ID AND b.item_id = c.item_id
WHERE c.ID IS NULL
;