代码之家  ›  专栏  ›  技术社区  ›  Ajan Balakumaran

两个Tsql查询之间的差异[重复]

  •  0
  • Ajan Balakumaran  · 技术社区  · 6 年前

        SELECT custid, companyname
        FROM Sales.Customers AS C
        WHERE EXISTS
        (SELECT *
        FROM Sales.Orders AS O
        WHERE O.custid = C.custid
        AND O.orderdate = '20180212');
    
    
    
        SELECT custid, companyname
        FROM Sales.Customers AS C
        INNER JOIN Sales.Orders AS O
        on O.custid = C.custid
        AND O.orderdate = '20180212'
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Tim Biegeleisen    6 年前

    EXISTS 查询。所以,要使第二个join版本相同,可以 SELECT DISTINCT :

    SELECT DISTINCT custid, companyname
    FROM Sales.Customers c
    INNER JOIN Sales.Orders o
        ON o.custid = c.custid
    WHERE o.orderdate = '20180212';
    

    存在 查询通常是表示查询的最有效方式。您使用这两个版本中的哪一个取决于您喜欢哪一个,您想要什么输出,以及哪一个版本似乎有更好的执行计划。