精华内容
下载资源
问答
  • 2019-07-18 13:42:57

    1. SQL UNION 操作符

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

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

     

    SQL UNION 语法

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

     

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

    SQL UNION ALL 语法

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

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

     

    更多相关内容
  • oracle 将多个查询结果合并

    万次阅读 2018-09-07 09:41:00
    首先要区分一个概况,多个查询结果分两种,一种是一条sql查询多个结果,还有一种是多条sql语句查询出多个结果。  先看第一个,一条语句查询出多个结果,将多个结果合并成一条记录:  在oracle中有一个wm_concat...

           首先要区分一个概况,多个查询结果分两种,一种是一条sql查询多个结果,还有一种是多条sql语句查询出多个结果。

           先看第一个,一条语句查询出多个结果,将多个结果合并成一条记录:

           在oracle中有一个wm_concat()函数。

    oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oraclewm_concat(column)函数实现字段合并

    如:

    shopping:

    -----------------------------------------

    u_id       goods            num

    ------------------------------------------

    1                苹果                2

    2                 梨子               5

    1                 西瓜               4

    3                 葡萄               1

    3                香蕉                1

    1               橘子                 3

    =======================

    想要的结果为:

    --------------------------------

    u_id          goods_sum

    ____________________

    1              苹果,西瓜,橘子

    2              梨子

    3              葡萄,香蕉

    ---------------------------------

    select u_id, wmsys.wm_concat(goods) goods_sum   from shopping   group by u_id  

    想要的结果2:

    --------------------------------

    u_id          goods_sum

    ____________________

    1              苹果(2斤),西瓜(4斤),橘子(3斤)

    2              梨子(5斤)

    3              葡萄(1斤),香蕉(1斤)

    ---------------------------------

    使用oracle wm_concat(column)函数实现:

    select u_id, wmsys.wm_concat(goods || '(' || num || '斤)' ) goods_sum   from shopping   group by u_id。

    以上案例借鉴于:https://www.cnblogs.com/qianyuliang/p/6649983.html

     

    接下来看将多个语句的查询结果合并:

    oracle 中有union() union all()函数:

    下面我举个栗子:

    对这个概念理解可能会有些模糊。我们通过实例来讲解,首先创建一个表Student,插入一些相应的测试数据。sql语句如下:

    复制代码

    drop table student;
    
    create table student
    
    (
    
    id int primary key,
    
    name nvarchar2(50) not null,
    
    score number not null
    
    );
    
    insert into student values(1,'Aaron',78);
    
    insert into student values(2,'Bill',76);
    
    insert into student values(3,'Cindy',89);
    
    insert into student values(4,'Damon',90);
    
    insert into student values(5,'Ella',73);
    
    insert into student values(6,'Frado',61);
    
    insert into student values(7,'Gill',99);
    
    insert into student values(8,'Hellen',56);
    
    insert into student values(9,'Ivan',93);
    
    insert into student values(10,'Jay',90);
    
    commit;

    复制代码

    3、测试 union 命令的结果集,sql语句如下:

    复制代码

    select *
    
    from student
    
    where id < 4
    
    union
    
    select *
    
    from student
    
    where id > 2 and id < 6

    复制代码

    4、结果将是:

          1    Aaron    78

          2    Bill    76

          3    Cindy    89

          4    Damon    90

          5    Ella    73

    5、如果将union换成union all连接两个结果集,则返回结果是:

                 1    Aaron    78

        2    Bill    76

        3    Cindy    89

        3    Cindy    89

        4    Damon    90

        5    Ella    73

     

             小结: 可以看到,Union和Union All的区别之一在于对重复结果的处理。接下来我们将两个子查询的顺序调整一下,改为

     

    --Union

    复制代码

    select *
    
    from student
    
    where id > 2 and id < 6
    
    union
    
    select *
    
    from student
    
    where id < 4

    复制代码

    看看执行结果是否和你期望的一致?

    --Union All

     

    复制代码

    select *
    
    from student
    
    where id > 2 and id < 6
    
    union all
    
    select *
    
    from student
    
    where id < 4

    复制代码

     

        那么这个呢?答案是一模一样的~

    6、据此我们可知,union和union all 区别在于在于对排序的处理。Union All将按照关联的次序组织数据,而Union将进行依据一定规则进行排序。那么这个排序规则是?我们换个查询方式看看:

     

    复制代码

    select score,id,name
    
    from student
    
    where id > 2 and id < 6
    
    union
    
    select score,id,name
    
    from student
    
    where id < 4

    复制代码

     

    结果如下:

        73    5    Ella

        76    2    Bill

        78    1    Aaron

        89    3    Cindy

        90    4    Damon

    和我们预料的一致:将会按照字段的顺序进行排序。之前我们的查询是基于id,name,score的字段顺序,那么结果集将按照id优先进行排序;而现在新的字段顺序也改变了查询结果的排序。并且,是按照给定字段a,b,c...的顺序进行的order by。即结果是order by a,b,c...........的。我们看下一个查询:

     

    复制代码

    select score,id,name
    
    from student
    
    where id > 2
    
    union
    
    select score,id,name
    
    from student
    
    where id < 4

    复制代码

     

    结果如下:

        56    8    Hellen

        61    6    Frado

        73    5    Ella

        76    2    Bill

        78    1    Aaron

        89    3    Cindy

        90    4    Damon

        90    10    Jay

        93    9    Ivan

        99    7    Gill

            可以看到,对于score相同的记录,将按照下一个字段id进行排序。如果我们想自行控制排序,是不是用order by指定就可以了呢?答案是肯定的,不过在写法上有需要注意的地方:

     

    复制代码

    select score,id,name
    
    from student
    
    where id > 2 and id < 7
    
    union
    
    select score,id,name
    
    from student
    
    where id < 4
    
    union
    
    select score,id,name
    
    from student
    
    where id > 8
    
    order by id desc

    复制代码

     

         order by子句必须写在最后一个结果集里,并且其排序规则将改变操作后的排序结果。对于Union、Union All都有效。

    7、注意:

        1,Union可以对字段名不同但数据类型相同的结果集进行合并;

        2,如果字段名不同的结果集进行Union,那么对此字段的Order by子句将失效。

        这里一起总结一下:

        Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

        Union All,对两个结果集进行并集操作,包括重复行,不进行排序;2016-12-23

        可以在最后一个结果集中指定Order by子句改变排序方式

    上面这个栗子我是从https://www.cnblogs.com/yuanchaoyong/p/6213885.html获取到的。

    谢谢两位博主的分享。

    展开全文
  • SQL查询结果返回实体结果集

    千次阅读 2014-10-27 11:13:51
    事先要用zhujie声明@Override public List getDashboardData() throws Exception{ Session session = sessionFactory.getCurrentSession(); if (session == null) { session = sessionFac

    事先要用注解标注DashboardData.class为Entity,并重启编译器。

    @Override
    public List<DashboardData> getDashboardData() throws Exception{
        Session session = sessionFactory.getCurrentSession();
        if (session == null) {
            session = sessionFactory.openSession();
        }
        String sql = "SELECT DISTINCT
     ROW_NUMBER() OVER (PARTITION  BY 1 order by taskname) AS RowNumber,
     T.ProjectID, T.ProjectName, T.BuildID, T.BuildName, T.TaskID, T.TaskName, T.Output, T.TaskCategoryID
      FROM
    (SELECT ROW_NUMBER() OVER (PARTITION  BY BuildName,TaskName ORDER BY BuildNumber DESC) AS ROWID,
              P.ProjectID,
              P.ProjectName,
              B.BuildID,
              B.BuildName,
              T.TaskID,
              T.TaskName,
              OP.Output,
         TC.TaskCategoryID
         FROM Project P
              INNER JOIN ProjectBuildMapping PBM ON P.ProjectID=PBM.ProjectID
              INNER JOIN Build B ON PBM.BuildID=B.BuildID
              INNER JOIN Output OP ON B.BuildID=OP.BuildID
              INNER JOIN Task T ON OP.TaskID=T.TaskID
              INNER JOIN TaskDimensionMapping TDM ON T.TaskID=TDM.TaskID
              INNER JOIN TaskCategory TC ON TC.TaskCategoryID=TDM.TaskCategoryID
          WHERE TC.TaskCategoryID=1 OR TC.TaskCategoryID=6) AS T
    WHERE T.ROWID=1
    ORDER BY taskname";
    <span style="white-space:pre">	</span>List<DashboardData> dashboardDatas = session.createSQLQuery(sql).addEntity(DashboardData.class).list();
    <span style="white-space:pre">	</span>return dashboardDatas;
    }

    展开全文
  • 2、对单个表执行多个查询,按单个查询返回数据。 使用UNION 创建组合查询很简单,所需要做的只是给出每条SELECT语句,然后在各SELECT语句中间放上UNION。 举例:需要查询价格小于等于5的所有物品的一个列表,而且...

    有两种基本情况需要使用组合查询:

    1、在单个查询中从不同的表返回结构类似的数据;

    2、对单个表执行多个查询,按单个查询返回数据。

    使用UNION

    创建组合查询很简单,所需要做的只是给出每条SELECT语句,然后在各SELECT语句中间放上UNION。

    举例:需要查询价格小于等于5的所有物品的一个列表,而且还想包括供应商1001和1002生产的所有物品(不考虑价格)。当然,可以利用WHERE子句来完成此工作。

    1)查询价格小于等于5的所有物品的一个列表

    mysql> SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price<=5;
    结果:

    +---------+---------+------------+
    | vend_id | prod_id | prod_price |
    +---------+---------+------------+
    |    1003 | FC      |       2.50 |
    |    1002 | FU1     |       3.42 |
    |    1003 | SLING   |       4.49 |
    |    1003 | TNT1    |       2.50 |
    +---------+---------+------------+
    4 rows in set (0.02 sec)

    2)查询供应商1001和1002生产的所有物品

    mysql> SELECT vend_id,prod_id,prod_price FROM products WHERE vend_id IN (1001,1002);
    结果:

    +---------+---------+------------+
    | vend_id | prod_id | prod_price |
    +---------+---------+------------+
    |    1001 | ANV01   |       5.99 |
    |    1001 | ANV02   |       9.99 |
    |    1001 | ANV03   |      14.99 |
    |    1002 | FU1     |       3.42 |
    |    1002 | OL1     |       8.99 |
    +---------+---------+------------+
    5 rows in set (0.10 sec)

    3)组合返回结果

    mysql> SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price<=5
        -> UNION
        -> SELECT vend_id,prod_id,prod_price FROM products WHERE vend_id IN (1001,1002);
    结果:

    +---------+---------+------------+
    | vend_id | prod_id | prod_price |
    +---------+---------+------------+
    |    1003 | FC      |       2.50 |
    |    1002 | FU1     |       3.42 |
    |    1003 | SLING   |       4.49 |
    |    1003 | TNT1    |       2.50 |
    |    1001 | ANV01   |       5.99 |
    |    1001 | ANV02   |       9.99 |
    |    1001 | ANV03   |      14.99 |
    |    1002 | OL1     |       8.99 |
    +---------+---------+------------+
    8 rows in set (0.03 sec)

    发现组合查询比分开查询的总结果少了一行,这是因为默认情况下UNION会过滤掉重复的行。

    使用UNION的规则

    1)必须由多条SELECT语句组成,语句中间用关键词UNION分割。

    2)UNION的每个查询必须含有相同的列,表达式或者聚集函数(次序无关紧要)

    3)列数据类型必须兼容(例如,不同的数值类型或不同的日期类型)

    展开全文
  • mysql中有种可以通过join相关操作进行表与表之间的方式查询不同结果集,但是在的情况下,关键查询结果条的.例如:班级和学习的关系,我想很直观的看到班级和学生的情况,列表显示出班级的信息和班级的男生...
  • 像图1这种情况,前面的字段内容全部都一样,只有其中一个字段的内容不一样,就可以把这些字段的数据整在一查询结果的字段里: sql语句: select uid,LXR,等等其他字段,GROUP_CONCAT(clcpmc separator'、') group ...
  • 提问 select userid,username,price,vol from table_a … select userid,...要让这两句形成一个结果集。怎么办? 解答 select userid,username,price,vol from table_a … union all select userid,username,...
  • PostgreSQL执行动态SQL返回多个结果

    千次阅读 2020-11-12 10:52:55
    PostgreSQL执行动态SQL返回多个结果集PostgreSQL执行动态SQL返回多个结果集创建存储 PostgreSQL执行动态SQL返回多个结果集 废话少说直接上代码 创建存储 CREATE OR REPLACE FUNCTION test(ref1 refcursor, ref2 ref...
  • 展开全部sql中引用一个表的查询结果作为条件来查询另一个表称为sql嵌套查询。简单子查询示例:Copyselect name,age from personwhere age >( select age from personwhere name = '孙权62616964757a686964616fe4b...
  • 最近我自己做项目,发现也需要实现一个类似的业务,百度了很,博客也看了不少,发现,类似的文章很少,有也不是我想要的,特此分享,供遇到问题的朋友参考。如有问题可联系我,联系方式最下面。   2、数据...
  • 比如第一个查询有100条两列,第二个查询结果也为160条两列,故使用union all之后,可以将这两个结果合并成一个,变成260行两列。 描述 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合...
  • mybatis查询结果返回至实体类

    万次阅读 2019-01-22 17:51:12
    近期,利用mybatis做一个简单查询,先看主要代码: Service层: package com.example1.service; import java.util.List; import org.apache.log4j.Logger; import org.springframework.beans.factory....
  •    最近在开发web(持久层框架用的是mybatis)时遇到一个小问题 : 需要查询对象列表返回到页面,每一个对象中有一个属性是list,我需要获取这个list中的值显示在页面上。 2. 解决方案    使用collection解决,...
  • 需要通过resultMap来实现 有一个对象InHosPatient ,它里面还有一个对象Patient ,那么通过resultMap可以实现将查询出的数据,组装到InHosPatient 中的 Patient 中 public class InHosPatient { /** * 住院日期...
  • 现在需要查询这个表中所有数据,返回一个map,map格式如下: ``` { key(plan_name和plan_num两字段拼接的值) = value(RptPlan对象) } ``` 这种能实现吗,能实现要XML里要怎么写查询语句。 新手求助,...
  • oracle 存储过程返回结果集合

    千次阅读 2018-10-30 14:15:43
    oracle的存储过程和其他的...一、传递一个参数,返回一个结果集 1.先创建程序包和包体,两者关系类似类和类中的方法 create or replace package test_package is   type resCursor is ref cursor;   proced...
  • 就是java中用mybatis进行一个select查询返回结果是对象List,假如这个时候查询的数据正好没有, 请问返回结果是null还是空的List
  • Mybatis 查询返回List集合

    万次阅读 2019-08-22 14:58:52
    集合时,需要将resultType的值定义为集合中元素类型,而不是返回集合本身。 有时候,我们不需要整个表的所有字段,而是只需要某一个字段的内容,比如:我希望从资产表中查出所有资产的名称,并且不存在重复。 <...
  • 前段时间在工作中遇到需要关联查询的情况,百度了好久遇到各种坑,所以在此记录一下,话不说直接开始 首先,先建几测试类,主子表通过grade_id关联,具体属性注释我就省略不写了,大家能看懂 主表 @...
  • 批量查询符合某条件的数据,返回Map集合,方便调用,减少次的JDBC交互,减轻数据库压力。 /** * 根据userIds信息查询用户信息,返回Map集合 * @param userIds * @return */ public Map&amp;amp;amp;amp;amp...
  • Mybatis查询多条记录并返回List集合

    万次阅读 多人点赞 2018-06-04 17:37:15
    实体对象如下: private String vend_id; private String vend_name; private String vend_address; private String vend_city; private String vend_state; private String vend_zip; ...pri...
  • 返回值一个是对象,一个集合,这怎么实现啊?publicObjectfindModuleDefByModule(LongmoduleId){ModuletempModule=moduleDao.selectByID(moduleId);System.out.println("tempModule...返回值一个是对象,一个是...
  • 返回map类型 1. xml中 <select id="selectUser " resultType=...这种方式SQL只能返回一个或者没有返回,如果返回多个,则程序报错。 返回List<String>类型 3. xml中 <select id="selectUser " r.
  • MyBatisPlus表关联查询返回list

    千次阅读 2020-11-16 15:19:16
    菜单和角色是关系,有一个关联表,菜单去重,角色返回集合 public class MenuVO extends SysMenu { private List<SysRole> roles; } 实现一 @Select("select rm.menu_id,m.`name`,m.url from ...
  • SpringDataJpa查询返回集合

    千次阅读 2019-10-12 10:23:54
    当我们使用SpringDataJpa写sql查询数组时,如果数据库查询出来的数据为空,结果会是怎样的呢 接口类 public interface Dao extends PagingAndSortingRepository { @Query("select eneity from table") List<...
  • hibernate查询结果返回Map集合

    万次阅读 2014-05-27 15:46:19
    返回结果: [{id=100103, name=衬衫}, {id=100301, name=连衣裙}, {id=100106, name=风衣}, {id=100104, name=西服}, {id=100105, name=外套}, {id=100102, name=POLO}, {id=100101, name=T恤}, {id=100108, name...
  • 关键字:string_agg('' , '')例如: select string_agg(name||'' , ',') from sys_user
  • 1、 在存在标签时,必须指定一个不会重复的列充当唯一标识,否则MyBtis会认为所有的数据都一样,只存第一条,并且会将最后一条数据中的中的数据覆盖到第一条中,可能存在数据错乱;没有标签时,Mybatis会默认比较...
  • JDBC调用存储过程 返回多结果

    千次阅读 2016-10-28 11:12:36
    package com.demo1; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet;...//调用无参存储过程 包括查询和删除 public class Demo6 { //1.存储

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,059,783
精华内容 423,913
关键字:

多个查询结果返回一个结果集合