Jer*_*ere 2 sql inner-join except intersect
我知道,INNER JOIN用于引用的键,而INTERSECT不是。但是afaik在某些情况下,两者都可以做相同的事情。那么,以下两个表达式之间是否存在差异(性能或其他方面)?如果有,哪个更好?
表达式1:
SELECT id FROM customers
INNER JOIN orders ON customers.id = orders.customerID;
Run Code Online (Sandbox Code Playgroud)
表达式2:
SELECT id FROM customers
INTERSECT
SELECT customerID FROM orders
Run Code Online (Sandbox Code Playgroud)
APH*_*APH 11
例如,请尝试以下操作:
CREATE TABLE #a (id INT)
CREATE TABLE #b (id INT)
INSERT INTO #a VALUES (1), (NULL), (2)
INSERT INTO #b VALUES (1), (NULL), (3), (1)
SELECT a.id FROM #a a
INNER JOIN #b b ON a.id = b.id
SELECT id FROM #a
INTERSECT
SELECT id FROM #b
Run Code Online (Sandbox Code Playgroud)
即使在您的情况下,它们也有很大不同。
该INNER JOIN会返回重复,如果id在两个表中被复制。 INTERSECT删除重复项。该INNER JOIN不会返回NULL,但INTERSECT将返回NULL。
两者有很大的不同。一个运算符通常匹配一组有限的列,并且可以在任一表中返回零行或更多行。另一个是基于集合的运算符,它比较两个集合之间的完整行,并且永远不会返回比较小表中更多的行。
| 归档时间: |
|
| 查看次数: |
2525 次 |
| 最近记录: |