精华内容
下载资源
问答
  • 前言今天小编在改bug的时候遇到一个既简单又让人头疼的问题,由于底层封装的执行sql语句的方法中没有合适我的,所以我只能在我的D层动手脚了……经验下面来说说我今天的情况:我们新建一个抽奖活动的时候需要绑定...

    前言

    今天小编在改bug的时候遇到一个既简单又让人头疼的问题,由于底层封装的执行sql语句的方法中没有合适我的,所以我只能在我的D层动手脚了……

    经验

    下面来说说我今天的情况:

    我们新建一个抽奖活动的时候需要绑定奖品,在绑定的时候肯定要去奖品池里查看一下我们填的这个奖品ID是否存在,如果存在就可以添加,不存在的话需要先去添加奖品,再进行绑定。由于我的奖品信息是可以动态添加多条的,所以我在进行查询的时候,传入的是一个奖品ID的数组,然后去依次的查询。之前使用的是一个for循环的语句,直接调的底层方法去查询,但是这个底层方法并不是我们想要的样子,是当这个查询语句没问题的时候就会返回true,只有发生异常的时候才会返回false,所以明显跟我们的需求不对应。所以我只能换了一种方法,动态拼接select语句……

    分享

    思路到了这就开始执行了,但是语句拼好了,那么当多个奖品的时候,我要怎么同时执行这些select语句呢?后来查到了可以使用union关键字来进行联合查询,下面我就开始给大家分享一下……

    1、union:联合的意思,即把两次或多次查询结果合并起来。

    2、   要求:两次查询的列数必须一致

    3、 可以来自多张表的数据:多次sql语句取出的列名可以不一致,此时以第一个sql语句的列名为准

    4、union会去掉重复的行,如果想保留重复的行,需要使用union all

    5、如果子句中有order by,limit,需用括号()包起来。推荐放到所有子句之后,即对最终合并的结果来排序或筛选

    例:(select * from a order by id) union (select * from b order id);

    6、在子句中,order by 需要配合limit使用才有意义。如果不配合limit使用,会被语法分析器优化分析时去除

    7、如果查询两个表中数据,两个表的字段是不一样的,

    table1: (id,createDate,lastUpdateDate,desc,num,hashCode),

    table2: (id,createDate,lastUpdateDate,desc)

    如果现在使用: select * from table1 UNION ALL select * from table2 则是不会成功的, 数据库为报:

    Error  The used SELECT statements have a different number of columns

    这是提示查询的两张表的字段不统一,如果table1比table2的字段内容多,可以使用空字符串来代替:

    select id,createDate,lastUpdateDate,desc,num,hashCode from table1 UNION ALL select                                             id,createDate,lastUpdateDate,desc,'','' from table2

    如果里面有不想要的,千万要记住前面查询内容要和后面查询内容的字段个数要一样,前面你查询4个,后面也要相应的放4个,这样就不会提示参数数量不同的错误了。

    8、从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL。

    下面小编放上自己项目中的代码,以便大家借鉴:

    public static bool Selectrewardinfo(string[] RewardIDstr1)

    {

    StringBuilder sbSql1 = new StringBuilder();

    for (int i = 0; i < RewardIDstr1.Length - 1; i++)

    {

    sbSql1.Append("SELECT RewardID FROM ta_reward_info WHERE RewardID = ");

    sbSql1.Append("'" + RewardIDstr1[i] + "'union");

    }

    sbSql1.Append(" SELECT RewardID FROM ta_reward_info WHERE RewardID = ");

    sbSql1.Append("'" + RewardIDstr1[RewardIDstr1.Length - 1] + "'");

    string sql = sbSql1.ToString();

    List List = GetList1(sql);

    bool flag;

    if (List.Count < RewardIDstr1.Length)

    {

    flag = false;

    }

    else

    {

    flag = true;

    }

    return flag;

    }

    总结

    经历了这么多,小编总结出来的只有一句话,那就是——方法总比问题多!没有我们解决不了的问题!加油~~

    展开全文
  • select union 语句

    千次阅读 2008-12-12 16:29:00
    说明可以在任何组合中、单一 UNION 运算中,合并两个或多个查询、表、及 SELECT 语句的结果。下列示例将名为 New Accounts 的现存表和一个 SELECT 语句合并:TABLE [New Accounts] UNION ALLSELECT *FROM Customers...

    说明
    可以在任何组合中、单一 UNION 运算中,合并两个或多个查询、表、及 SELECT 语句的结果。下列示例将名为 New Accounts 的现存表和一个 SELECT 语句合并:

    TABLE [New Accounts] UNION ALL

    SELECT *

    FROM Customers

    WHERE OrderAmount > 1000;


    按照缺省规定,使用 UNION 运算时不返回重复的记录;然而,可以包含 ALL 谓词来确保返回所有的记录。这样,运行查询的速度也会快些。

    一次 UNION 运算中的所有查询必须要求相同的字段数量;但是,字段无须具有相同的大小或数据类型。

    只能在第一个 SELECT 语句中使用别名,因为它们在其他语句中已被省略。在 ORDER BY 子句中,可引用在第一个 SELECT 语句中被调用的字段名。


    error eg1:Select MZDM, count(*) as RenNum From v_YJS_YJSXX Where BMDM='501000' and NJ= 2006 union all Select MZDM,count(*) as MinShao From v_YJS_YJSXX Where BMDM='501000' and NJ= 2006 union all Select MZDM,count(*) as MinShao From v_YJS_YJSXX Where BMDM='501000' and NJ= 2006;

    ORA-00937: not a single-group group function

    去掉:MZDM,或者count(*) as RenNum

    展开全文
  • SQL UNION 操作符合并两个或多个 SELECT 语句的结果。 SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的...

    SQL UNION 操作符

    SQL UNION 操作符合并两个或多个 SELECT 语句的结果。

    SQL UNION 操作符

    UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

    请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

    SQL UNION 语法

    SELECT column_name(s) FROM table1
    UNION
    SELECT column_name(s) FROM table2;

    注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

    SQL UNION ALL 语法

    SELECT column_name(s) FROM table1
    UNION ALL
    SELECT column_name(s) FROM table2;

    注释:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。


    演示数据库

    在本教程中,我们将使用 RUNOOB 样本数据库。

    下面是选自 "Websites" 表的数据:

    mysql> SELECT * FROM Websites;
    +----+--------------+---------------------------+-------+---------+
    | id | name         | url                       | alexa | country |
    +----+--------------+---------------------------+-------+---------+
    | 1  | Google       | https://www.google.cm/    | 1     | USA     |
    | 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
    | 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
    | 4  | 微博          | http://weibo.com/         | 20    | CN      |
    | 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
    | 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
    +----+---------------+---------------------------+-------+---------+

    下面是 "apps" APP 的数据:

    mysql> SELECT * FROM apps;
    +----+------------+-------------------------+---------+
    | id | app_name   | url                     | country |
    +----+------------+-------------------------+---------+
    |  1 | QQ APP     | http://im.qq.com/       | CN      |
    |  2 | 微博 APP | http://weibo.com/       | CN      |
    |  3 | 淘宝 APP | https://www.taobao.com/ | CN      |
    +----+------------+-------------------------+---------+
    3 rows in set (0.00 sec)

     


    SQL UNION 实例

    下面的 SQL 语句从 "Websites" 和 "apps" 表中选取所有不同的country(只有不同的值):

    实例

    SELECT country FROM Websites
    UNION
    SELECT country FROM apps
    ORDER BY country;

    执行以上 SQL 输出结果如下:

    注释:UNION 不能用于列出两个表中所有的country。如果一些网站和APP来自同一个国家,每个国家只会列出一次。UNION 只会选取不同的值。请使用 UNION ALL 来选取重复的值!


    SQL UNION ALL 实例

    下面的 SQL 语句使用 UNION ALL 从 "Websites" 和 "apps" 表中选取所有的country(也有重复的值):

    实例

    SELECT country FROM Websites
    UNION ALL
    SELECT country FROM apps
    ORDER BY country;

    执行以上 SQL 输出结果如下:

     


    带有 WHERE 的 SQL UNION ALL

    下面的 SQL 语句使用 UNION ALL 从 "Websites" 和 "apps" 表中选取所有的中国(CN)的数据(也有重复的值):

    实例

    SELECT country, name FROM Websites
    WHERE country='CN'
    UNION ALL
    SELECT country, app_name FROM apps
    WHERE country='CN'
    ORDER BY country;

    执行以上 SQL 输出结果如下:


    select country from websites union select country from apps;
    
    --连接两个表的查询结果集,重复的不显示
    
    select country from websites union all select country from apps order by country;
    
    --连接俩个个表的查询结果集,显示重复
    
    select country,name from websites where country = 'CN' union all 
    
    select country,app_name from apps where country='CN' order by name; 
    
    --通过where条件查询的结果,连接连个表的结果集,并根据名字排序。

    使用UNION命令时需要注意,只能在最后使用一个ORDER BY命令,是将两个查询结果合在一起之后,再进行排序!绝对不能写两个ORDER BY命令。

    另外,在使用ORDER BY排序时,注意两个结果的别名保持一致,使用别名排序很方便。当然也可以使用列数。


    SQL SELECT INTO 语句

    通过 SQL,您可以从一个表复制信息到另一个表。

    SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。

    SQL SELECT INTO 语句

    SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。

    MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECT 。

    当然你可以使用以下语句来拷贝表结构及数据:

    CREATE TABLE 新表 SELECT * FROM 旧表 

    SQL SELECT INTO 语法

    我们可以复制所有的列插入到新表中:

    SELECT *
    INTO newtable [IN externaldb]
    FROM table1;

    或者只复制希望的列插入到新表中:

    SELECT column_name(s)
    INTO newtable [IN externaldb]
    FROM table1;

     

    lamp

    提示:新表将会使用 SELECT 语句中定义的列名称和类型进行创建。您可以使用 AS 子句来应用新名称。

     


    SQL SELECT INTO 实例

    创建 Websites 的备份复件:

    SELECT *
    INTO WebsitesBackup2016
    FROM Websites;

    只复制一些列插入到新表中:

    SELECT name, url
    INTO WebsitesBackup2016
    FROM Websites;

    只复制中国的网站插入到新表中:

    SELECT *
    INTO WebsitesBackup2016
    FROM Websites
    WHERE country='CN';

    复制多个表中的数据插入到新表中:

    SELECT Websites.name, access_log.count, access_log.date
    INTO WebsitesBackup2016
    FROM Websites
    LEFT JOIN access_log
    ON Websites.id=access_log.site_id;

    提示:SELECT INTO 语句可用于通过另一种模式创建一个新的空表。只需要添加促使查询没有数据返回的 WHERE 子句即可:

    SELECT *
    INTO newtable
    FROM table1
    WHERE 1=0;


    SQL INSERT INTO SELECT 语句

    通过 SQL,您可以从一个表复制信息到另一个表。

    INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。


    SQL INSERT INTO SELECT 语句

    INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。

    SQL INSERT INTO SELECT 语法

    我们可以从一个表中复制所有的列插入到另一个已存在的表中:

    INSERT INTO table2
    SELECT * FROM table1;

    或者我们可以只复制希望的列插入到另一个已存在的表中:

    INSERT INTO table2
    (column_name(s))
    SELECT column_name(s)
    FROM table1;

     


    演示数据库

    在本教程中,我们将使用 RUNOOB 样本数据库。

    下面是选自 "Websites" 表的数据:

    +----+--------------+---------------------------+-------+---------+
    | id | name         | url                       | alexa | country |
    +----+--------------+---------------------------+-------+---------+
    | 1  | Google       | https://www.google.cm/    | 1     | USA     |
    | 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
    | 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
    | 4  | 微博          | http://weibo.com/         | 20    | CN      |
    | 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
    | 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
    +----+---------------+---------------------------+-------+---------+

    下面是 "apps" APP 的数据:

    mysql> SELECT * FROM apps;
    +----+------------+-------------------------+---------+
    | id | app_name   | url                     | country |
    +----+------------+-------------------------+---------+
    |  1 | QQ APP     | http://im.qq.com/       | CN      |
    |  2 | 微博 APP | http://weibo.com/       | CN      |
    |  3 | 淘宝 APP | https://www.taobao.com/ | CN      |
    +----+------------+-------------------------+---------+
    3 rows in set (0.00 sec)

     


    SQL INSERT INTO SELECT 实例

    复制 "apps" 中的数据插入到 "Websites" 中:

    实例

    INSERT INTO Websites (name, country)
    SELECT app_name, country FROM apps;

    只复 QQ 的 APP 到 "Websites" 中:

    实例

    INSERT INTO Websites (name, country)
    SELECT app_name, country FROM apps
    WHERE id=1;


    SQL CREATE DATABASE 语句

    SQL CREATE DATABASE 语句

    CREATE DATABASE 语句用于创建数据库。

    SQL CREATE DATABASE 语法

    CREATE DATABASE dbname;


    SQL CREATE DATABASE 实例

    下面的 SQL 语句创建一个名为 "my_db" 的数据库:

    CREATE DATABASE my_db;

    数据库表可以通过 CREATE TABLE 语句来添加。


    SQL CREATE TABLE 语句

    SQL CREATE TABLE 语句

    CREATE TABLE 语句用于创建数据库中的表。

    表由行和列组成,每个表都必须有个表名。

    SQL CREATE TABLE 语法

    CREATE TABLE table_name
    (
    column_name1 data_type(size),
    column_name2 data_type(size),
    column_name3 data_type(size),
    ....
    );

    column_name 参数规定表中列的名称。

    data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。

    size 参数规定表中列的最大长度。

    提示:如需了解 MS Access、MySQL 和 SQL Server 中可用的数据类型,请访问我们完整的 数据类型参考手册


    SQL CREATE TABLE 实例

    现在我们想要创建一个名为 "Persons" 的表,包含五列:PersonID、LastName、FirstName、Address 和 City。

    我们使用下面的 CREATE TABLE 语句:

    实例

    CREATE TABLE Persons
    (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    );

    PersonID 列的数据类型是 int,包含整数。

    LastName、FirstName、Address 和 City 列的数据类型是 varchar,包含字符,且这些字段的最大长度为 255 个字符。

    空的 "Persons" 表如下所示:

    PersonID LastName FirstName Address City
             

    提示:可使用 INSERT INTO 语句向空表写入数据。


     

    展开全文
  • UNIONUNION ALL 操作符 都是合并SELECT语句的结果集,不同的是,UNION是合并不同的结果集,重复的值不会合并;UNION ALL是合同所有的结果集,重复的值也会合并 另外:UNION 结果集中的列名总是等于 UNION 中第一个...

    MySQL的UNION和UNION ALL 操作符

    UNION和UNION ALL 操作符 都是合并SELECT语句的结果集,不同的是,UNION是合并不同的结果集,重复的值不会合并;UNION ALL是合同所有的结果集,重复的值也会合并

    另外:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名

    UNION 语法

    SELECT column_name(s) FROM table_name1
    UNION
    SELECT column_name(s) FROM table_name2

    UNION ALL 语法

    SELECT column_name(s) FROM table_name1
    UNION ALL
    SELECT column_name(s) FROM table_name2

    示例:

    表Employees_China:

    在这里插入图片描述
    表Employees_USA:
    在这里插入图片描述
    使用 UNION 命令

    SELECT E_Name FROM Employees_China
    UNION
    SELECT E_Name FROM Employees_USA

    结果
    在这里插入图片描述
    注释:在上面的例子中,我们有两个名字相同的雇员,他们当中只有一个人被列出来了。UNION 命令只会选取不同的值。

    使用 UNION ALL 命令

    UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。

    SELECT E_Name FROM Employees_China
    UNION ALL
    SELECT E_Name FROM Employees_USA

    结果
    在这里插入图片描述

    展开全文
  • Mysql同时执行多个select语句——union

    万次阅读 热门讨论 2016-08-08 12:53:59
     今天小编在改bug的时候遇到一个既简单又让人头疼的问题,由于底层封装的执行sql语句的方法中没有合适我的,所以我只能在我的D层动手脚了…… 经验 下面来说说我今天的情况:  我们新建一个抽奖活动的时候需要...
  • UNION操作符用于合并两个或多个SELECT语句的结果集,这里需要注意的是:UNION内部的SELECT语句必须拥有相同数量的 列,列也必须拥有相似的数据类型,同时,每条SELECT语句中列的顺序必须相同。 UNION语法: ...
  • 本章主要内容:SQL UNION 操作符,SQL SELECT INTO 语句,SQL INSERT INTO SELECT 语句
  • sql语句union,union all

    2017-11-24 11:08:47
    sql中union 用于合并两个或多个 SELECT 语句的结果集。 需要注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 SQL UNION 语法 ...
  • SQL语句UNION和 UNION ALL

    2017-03-15 09:52:34
    SQL UNION 操作符UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 ...
  • UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 SQL UNION 语法 ...
  • UNIONUNION ALL操作符用于合并两个或多个 SELECT 语句的结果集。从这个角度来看,它们跟 JOIN 有些类似,都可以从多个表中获取信息。 注意的是: UNIONUNION ALL内部的 SELECT 语句必须拥有相同数量的列。列...
  • SQL语句 UNIONUNION ALL 用法

    千次阅读 2019-05-14 09:27:48
    1.UNION——操作符用于合并两个或多个 SELECT 语句的结果集。(注:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。) UNION 语法 ...
  • UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 SQL UNION 语法 ...
  • 我需要实现Select top 10 * for each group功能。 用In语句,当数据大了以后非常慢,前面刚想到一个...所以不知道Union可以连接多少个Select语句(我链接个80个不行,改成链接三四十个好像没问题)。 另外,有没有不
  • 一、基本的SELECT语句  1. “*”的注意事项:在SELECT语句中,用*来选取所有的列,这是一个应该抵制的习惯。  虽然节省了输入列名的时间,但是也意味着获得的数据比真正需要的数据多的多。相应的,也会降低应用...
  • UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 SQL UNION 语法 ...
  • SQL语句UNION与UNION ALL的用法 UNION 操作符用于合并两个或多个 SELECT 语句的结果集 UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL UNION/UNION ALL 结果集中的列名总是等于 ...
  • UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 select sname as name,ssex as sex,sbirthday as birthday from student UNION SELECT ...
  • UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 SQL UNION 语法 ...
  • MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。 描述 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 ...
  • select nvl(sum(hsj),0)tlmjg from XSMX_RCGZ_B_JGTZ t where cpmc='液化气'and xslxbh='007' and to_char(jgrq,'yyyyMMdd')='20180809' union all select nvl(sum(qgrqjg),0)qgrqzs from XSMX_RQZS t where rq='...
  • UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 SQL UNION 语法 ...
  • 语法格式:SELECT...UNION[ALL|DISTINCT]SELECT...[UNION[ALL|DISTINCT]SELECT...]每个SELECT语句的对应位置的被选择的列应具有相同的类型,例如,被第一个语句选择的第一列应和被其它语句选择的第一列具有相同的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,255
精华内容 2,102
关键字:

select语句union