MySQL 连接和内部选择

标签 mysql select join refactoring

我现在有一个问题

SELECT id FROM table1 WHERE {filters on table1} AND id NOT IN (SELECT table1ID FROM table2 WHERE condition = 0)

Table1 与 table2 有 1 - Many 关系,我正在寻找在 table2 中没有条目且条件为 0 的所有 ID。

有没有办法在没有内部选择的情况下重写这个查询?一段时间以来,我一直在摸不着头脑,欢迎任何指点。

最佳答案

你可以尝试类似的东西

SELECT  id 
FROM    table1 t1 LEFT JOIN
        table2 t2   ON  t1.ID = t2.table1ID
                    AND t2.Condition = 0
WHERE   {filters on table1} 
AND     t2.table1ID IS NULL

或者一样好

SELECT  id
FROM    table1 t1
WHERE   {filters on table1} 
AND     NOT EXISTS  (
                        SELECT  1
                        FROM    table2 t2
                        WHERE   t1.ID = t2.table1ID
                        ADN     t2.condition = 0
                    )

关于MySQL 连接和内部选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4283501/

相关文章:

php - 动态更新mysql表

php - 将内容限制为前 10 位用户的最佳方法是什么(可能使用 PHP 和 MySQL)?

mysql - 如何最大限度地减少这些子查询的使用并提高性能?

mysql - 让mysql在加入时使用 View

mysql - 什么 MySQL 查询可以返回满足所有条件的结果集,例如返回具有这些 'x' 关键字的所有照片?

php - 如何在 PHP/MySQL 中生成夹具列表?

php - 如何解决 GCM 1000 条消息限制,想要将消息发送到 10000 条数据库?

jquery - MySql where 子句中的 case 条件

Mysql 根据条件选择不重复的值

java - Kafka流加入