mysql - 两张表的复杂 MySQL 查询

标签 mysql

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

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

我如何编写 mySQL 查询来查找存在于“offers”但不存在于“dates”中的 offer_id?

我试过了

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

但这没有用。

最佳答案

对于较大的表,此变体将比 NOT IN 快很多:外部连接到 dates 然后过滤 where 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

关于mysql - 两张表的复杂 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15590684/

相关文章:

mysql - 根据INT列值更新SQL数据库重复字段

mysql - 合并各个表?

MySQL 检查不同日期的键值是否存在超过 n 次

java - jsp jSTL sql 与 mysql 中一样的奇怪行为

mysql - 基于时区快速查询大表

php - 在 Kendo UI 中显示编码的 HTML

php - 从 MySQL 表中获取详细信息,如长度、值

php - 如何使用 MySQL 在单个查询中运行两个不同的查询?

MySQL 左连接查询突然卡在一个数据库中,但在另一个数据库中运行

php - 如何用php删除表中的特定行