两个表上的复杂MySQL查询

时间:2013-03-23 18:46:23

标签: mysql

我有一个名为“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

但这没效果。

2 个答案:

答案 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)