• Union ,Union ALL的用法


    在项目中遇见到查询参考此报价地区的地区信息,并且把此地区的信息与查询出来的参考报价地区信息组成一张临时表,这用到UNION 或则UNION all,

    SQL 代码如下:

    SQL 1
    1 CREATE TYPE TY_AreaANDGoods AS TABLE(
    2 AreaID INT,
    3 TypeID INT
    4 )
    5 DECLARE @dt TY_AreaANDGoods;
    6 INSERT INTO @dt VALUES(1,1);
    7 SELECT aa.AreaId,aa.GoodsTypeId FROM MD_Area aa,@dt tt WHERE aa.QuotationType =tt.AreaID AND aa.GoodsTypeId = tt.TypeID
    8 UNION
    9 SELECT AreaID,TypeID FROM @dt

    我创建表值变量类型,并声明此类型的变量,用此变量来传递数据,然后利用UNION来实现功能要求。

    用UNION需要注意:

    1、所有UNION的查询必须在SELECT 列表项中有相同的列数。

    2、UNION查询的结果级的列标题仅从第一个查询处获得。

    3、查询中对应咧的数据类型必须隐式一致。

    4、UNION查询的默认返回选项为Distinct。

    SQL 2
     1 CREATE TABLE tb_test
    2 (
    3 col INT IDENTITY(1,1),
    4 Name char(10)
    5 )
    6 CREATE TABLE tb_test2
    7 (
    8 COL INT IDENTITY(1,1),
    9 Name NVARCHAR(20)
    10 )
    11 CREATE TABLE tb_Test3(
    12 COL INT IDENTITY(1,1),
    13 Name nvarchar(10)
    14 )
    15 INSERT INTO tb_test VALUES('AAA');
    16 INSERT INTO tb_test VALUES('BBB');
    17 INSERT INTO tb_test2 VALUES('CCCCCCCCCCCCC');
    18 INSERT INTO tb_test2 VALUES('CCCCCCCCCCCCCCCCCCC');
    19 INSERT INTO tb_test2 VALUES('AAA');
    20 INSERT INTO tb_Test3 VALUES('DDD');
    21 INSERT INTO tb_Test3 VALUES('FFF');
    22 SELECT Name FROM tb_test
    23 UNION
    24 SELECT Name FROM tb_test2
    25 UNION
    26 SELECT Name FROM tb_Test3


    可以看到查询处的结果已经经过DISTINCT处理,如果想全部显示需要做如下改变:

    sql 3
    1 SELECT Name  AS TEST FROM tb_test
    2 UNION ALL
    3 SELECT Name FROM tb_test2
    4 UNION ALL
    5 SELECT Name FROM tb_Test3



  • 相关阅读:
    170120、java 如何在pdf中生成表格
    170119、100亿数据1万属性数据架构设计
    170118、快速失败Vs安全失败(Java迭代器附示例)
    170117、spring解决乱码
    170116、centos6.4下nginx和ftp搭建图片服务器
    170113、CentOs6.4中安装和配置vsftp简明教程
    linux nginx完全卸载
    DevOps 的技术栈与工具链
    git与pycharm结合使用
    JMeter和JMeterPlugin的下载安装
  • 原文地址:https://www.cnblogs.com/hfliyi/p/2378721.html
Copyright © 2020-2023  润新知