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