1

我有一张名为“offers”的表,其中包含“offer_id”、“offer”和“hid”列。主键是“offer_id”。

我有另一个名为“dates”的表,其中包含“hid”、“date”、“offer_id”等列。主键是“日期”和“隐藏”。“offer_id”的相同值可以存在于许多行中(或根本没有)。

如何编写一个 mySQL 查询来查找“offers”中存在但“dates”中不存在的 offer_ids?

我试过

SELECT offers.offer_id FROM offers JOIN dates ON offers.offer_id NOT IN dates

但这没有用。

4

2 回答 2

3

对于较大的表,此变体将比NOT IN: 外连接到dates然后过滤 where dates.offer_idis null 快得多:

SELECT offers.offer_id
FROM offers
LEFT OUTER JOIN dates ON offers.offer_id = dates.offer_id
WHERE dates.offer_id IS NULL
于 2013-03-23T18:55:54.650 回答
2

我认为这应该对你有用。

SELECT offers.offer_id FROM offers where offer_id NOT IN (select offer_id from dates)
于 2013-03-23T18:49:49.020 回答