假设我有 2 个表 T1 和 T2。我需要表 T1 中不存在于表 T2 中的所有值。该 SQL 会是什么样子?
T1: T2:
T1.ID T2.ID
T1.Value T2.T1ID
T1.Date T2.Value
最佳答案
I need all values from table T1 that does not exist in table T2. How would that SQL look like?
您的意思是您需要每个 T1.Value
都不匹配任何 T2.Value
?
如果是这样,你可以使用这样的东西:
SELECT * FROM T1
WHERE Value NOT IN (SELECT Value FROM T2)
但是,MySQL 可能不太擅长为执行此查询找到最佳计划,因此如果您的测量 显示性能问题,请尝试如下操作:
SELECT DISTINCT T1.*
FROM T1 LEFT JOIN T2 ON T1.Value = T2.Value
WHERE T2.ID IS NULL
请注意 DISTINCT 子句,它确保 T1 行不会被 JOIN“相乘”。
甚至像这样,如果您只关心T1.Value
:
SELECT DISTINCT T1.Value
...
关于mysql - 什么 SQL JOIN 用于跨表获取唯一值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13047821/