我有一个名为“offer”的表,其中包含“offer_id”,“offer”和“hid”列。 主键是“offer_id”。
我还有一个名为“dates”的表,其中包含“hid”,“date”,“offer_id”等列。 主键是“日期”和“隐藏”。 “offer_id”的相同值可以存在于许多行中(或者根本不存在)。
如何编写mySQL查询以查找“offer”中存在而不是“date”中的offer_id?
我试过
SELECT offers.offer_id FROM offers JOIN dates ON offers.offer_id NOT IN dates
但这没效果。
答案 0 :(得分:3)
对于较大的表,此变体将比NOT IN
:外部联接到dates
快得多,然后过滤dates.offer_id
为空的位置:
SELECT offers.offer_id
FROM offers
LEFT OUTER JOIN dates ON offers.offer_id = dates.offer_id
WHERE dates.offer_id IS NULL
答案 1 :(得分:2)
我认为这对你有用。
SELECT offers.offer_id FROM offers where offer_id NOT IN (select offer_id from dates)