1
144
我可能会使用左联接,它将返回行,即使没有匹配,然后您可以通过检查空值仅选择没有匹配的行。 所以,有点像:
这是否比使用子查询效率高或低取决于优化、索引、每个投票人是否可以有多个排除等。 |
2
4
我会用一个“不存在的地方”——正如你在标题中建议的那样:
这可能比执行左联接(当然,这取决于您的索引、表的基数等)快得多,而且几乎可以肯定 许多的 比在中使用更快。 |
3
3
有三种可能的方法可以做到这一点。
SELECT lt.* FROM table_left lt LEFT JOIN table_right rt ON rt.value = lt.value WHERE rt.value IS NULL
SELECT lt.* FROM table_left lt WHERE lt.value NOT IN ( SELECT value FROM table_right rt )
SELECT lt.* FROM table_left lt WHERE NOT EXISTS ( SELECT NULL FROM table_right rt WHERE rt.value = lt.value ) |
hello_programmers · Mysql从其他表输出一列 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 1 年前 |
Kugelfisch · 用php为数据库加密数据 1 年前 |