zoukankan      html  css  js  c++  java
  • sql中关联查询

    SQL中 EXCEPT、INTERSECT用法
    EXCEPT 返回两个结果集的差(即从左查询中返回右查询没有找到的所有非重复值)。
    INTERSECT 返回 两个结果集的交集(即两个查询都返回的所有非重复值)。

    UNION返回两个结果集的并集。

    UNION,EXCEPT, INTERSECT关键字用于对集合的查询,它们的作用分别为:
    UNION:合并两个或多个 SELECT 语句的结果集,并把重复结果去除;
    UNIONALL:合并两个或多个 SELECT 语句的结果集,不去除重复结果;
    EXCEPT:查询包含在A语句的结果集中但不包含在B语句的结果集中的结果;
    语法:
    { (<SQL-查询语句1>) }
    { EXCEPT | INTERSECT }
    { (<SQL-查询语句2> )}

    限制条件
    (1)所有查询中的列数和列的顺序必须相同。
    (2)比较的两个查询结果集中的列数据类型可以不同但必须兼容。
    (3)比较的两个查询结果集中不能包含不可比较的数据类型(xml、text、ntext、image 或非二进制 CLR 用户定义类型)的列。
    (4)返回的结果集的列名与操作数左侧的查询返回的列名相同。ORDER BY 子句中的列名或别名必须引用左侧查询返回的列名。
    (5)不能与 COMPUTE 和 COMPUTE BY 子句一起使用。
    (6)通过比较行来确定非重复值时,两个 NULL 值被视为相等。(EXCEPT 或 INTERSECT 返回的结果集中的任何列的为空性与操作数左侧的查询返回的对应列的为空性相同。)
    与表达式中的其他运算符一起使用时的执行顺序
    1、括号中的表达式
    2、INTERSECT 操作数
    3、基于在表达式中的位置从左到右求值的 EXCEPT 和 UNION
    如果 EXCEPT 或 INTERSECT 用于比较两个以上的查询集,则数据类型转换是通过一次比较两个查询来确定的,并遵循前面提到的表达式求值规则。

    举例:
    tableA tableB

    NULL NULL
    NULL 2
    1 3
    1 4
    2 5
    3 5


    A:(SELECT * FROM TableA) EXCEPT (SELECT * FROM TableB)
    结果: 1
    (1 row(s) affected)
    B: SELECT * FROM TableA INTERSECT SELECT * FROM TableB
    结果:2
       3
       4
       5
    (4 row(s) affected)
  • 相关阅读:
    [N1CTF 2018]eating_cms 敏感文件扫描+php伪协议利用
    文件包含漏洞(总结)+常见的getshell+PHP伪协议
    laravel安装jwt-auth及验证(实例)
    理解 PHP 8 的 JIT
    Laravel 文件缓存也可以快得飞起,tmpfs 了解一下
    关于 Laravel ORM 对 Model::find 方法进行缓存
    在 Laravel 7 中优雅使用 UUID 教程
    PestPHP 正式开源,一个优雅的测试框架
    PHP 8 还有半年就要来了, 来看看有哪些新特性
    Redis持久化过程的监控及优化
  • 原文地址:https://www.cnblogs.com/future-wy/p/10609401.html
Copyright © 2011-2022 走看看