代码之家  ›  专栏  ›  技术社区  ›  callisto

INTERSECT和WHERE的区别是什么?

  •  6
  • callisto  · 技术社区  · 15 年前

    INTERSECT 用一个 WHERE IN EXCEPT 用一个 WHERE NOT IN 子查询。

    使用新命令而不是子查询之间有什么区别吗?

    2 回复  |  直到 15 年前
        1
  •  6
  •   Kingo    15 年前

    INTERSECT EXCEPT 比较返回的行中所有选定的值 WHERE IN WHERE NOT IN 一次只比较一列。

    SELECT name,date from customers
    EXCEPT
    SELECT name, date from orders
    
        2
  •  4
  •   Martin Smith    15 年前

    NULL s

    WITH T1 AS(SELECT 1 AS COL UNION SELECT NULL),
         T2 AS (SELECT 2 AS COL UNION SELECT NULL)
    SELECT * FROM T1 
    INTERSECT 
    SELECT * FROM T2;
    

    .

    COL
    -----------
    NULL
    
    (1 row(s) affected)
    

    .

    WITH T1 AS(SELECT 1 AS COL UNION SELECT NULL),
         T2 AS (SELECT 2 AS COL UNION SELECT NULL)
    SELECT * FROM T1 WHERE COL IN (SELECT COL FROM T2) ;
    

    COL
    -----------
    
    (0 row(s) affected)
    

    .

    WITH T1 AS(SELECT 1 AS COL UNION SELECT NULL),
         T2 AS (SELECT 2 AS COL UNION SELECT NULL)
    SELECT * FROM T1 
    EXCEPT 
    SELECT * FROM T2;
    

    .

    COL
    -----------
    1
    
    (1 row(s) affected)
    

    WITH T1 AS(SELECT 1 AS COL UNION SELECT NULL),
         T2 AS (SELECT 2 AS COL UNION SELECT NULL)
    SELECT * FROM T1 WHERE COL NOT IN (SELECT COL FROM T2);
    

    .

    列
    -----------
    
    (0行受影响)