【问题标题】:MySQL query rows that are in table_b and not in table_aMySQL 查询在 table_b 中而不在 table_a 中的行
【发布时间】:2010-07-05 14:38:12
【问题描述】:

我正在执行此查询以获取 table_b 中而不是 table_a 中的行:

SELECT table_b.* FROM table_b
LEFT JOIN table_a ON table_b.id = table_a.id
WHERE table_a.item_id IS NULL

这可以正常工作,但我需要另一个条件才能应用于 table_a。我只需要比较使列 X 等于 ID 3 的行,而不是比较整个表。有什么想法吗?

谢谢。

【问题讨论】:

    标签: mysql compare


    【解决方案1】:

    我不确定您是在寻找 table_a 列 x 还是 table_b 列 x,但我们的想法是将其添加到 join ON 子句中:

    LEFT JOIN table_a ON table_b.id = table_a.id and table_a.id = 3
    

    【讨论】:

    • 它有效,我完全错过了 ON 子句的第二个参数。谢谢。
    • 不错的迈克,看来你的打字速度比我快 :) 有一个 +1 !
    • @Dave,我通常比较慢!
    【解决方案2】:

    试试这个...

    选择表_b。* 从表_b 左连接表_a ON table_b.id = table_a.id AND table_a.X = 3 WHERE table_a.item_id 为 NULL

    应该做的伎俩...

    但这有点奇怪,因为它可能会返回比您需要的更多。此查询还将返回 table_b 中在 table_a 中有结果的任何行,但这些行的“X”值不为 3。

    如果不起作用,请尝试举例说明您需要查找的数据以及您不想要的数据,我们可以尝试进一步提供帮助!

    【讨论】:

      猜你喜欢
      • 2019-11-09
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 2023-03-24
      • 2017-12-03
      • 2017-08-01
      • 1970-01-01
      相关资源
      最近更新 更多