私はちょうどMSDNライブラリでEXCEPTとINTERSECTについて読んとINTERSECTを使用する方法のこの例に出くわした:EXCEPTがT-SQLに存在するのはなぜですか?
USE AdventureWorks2008R2 GO
SELECT ProductID
FROM Production.Product
INTERSECT
SELECT ProductID
FROM Production.WorkOrder ;
--Result: 238 Rows (products that have work orders)
は、たぶん私は昔ながらのだけど、私は一般的に達成するために、次のコードを使用します同じ結果:
SELECT P.ProductID
FROM Production.Product P
INNER JOIN Production.WorkOrder W ON W.ProductID = P.ProductID
私は何かが見つからないか、INTERNECT INNER JOINと同じですか? 1つを他のものに使用することにパフォーマンス上の利点はありますか?
EXCEPTと同じ質問です。
USE AdventureWorks2008R2;
GO
SELECT ProductID
FROM Production.Product
EXCEPT
SELECT ProductID
FROM Production.WorkOrder ;
--Result: 266 Rows (products without work orders)
この異なる:これはどのようにある
SELECT P.ProductID
FROM Production.Product P
LEFT JOIN Production.WorkOrder W ON W.ProductID = P.ProductID
WHERE W.ProductID IS NULL
?私の意見EXCEPT
とINTERSECT
で
-1:それはINTERSECTの仕組みではありません。最初の例では、作業指示のある製品は返されません。製品の作業オーダーのIDと同じIDを持つ製品のIDを返します。 O1 は、外側左よう –