mysql中UNION使用的问题 --乐杨俊

原创 2013年12月01日 20:29:39

总结问题:

a表中有x,y,z 3个字段,b表中只有x,y 2个字段,
我用union组合查询结果时应该怎样写?
(select * from a)
union 
(select (*,z) from b)     这样是不可以的

解答:
UNION 用于把来自许多SELECT语句的结果组合到一个结果集合中。(如果你要将多个表的查询结果进行合并输出比如说 群组消息跟个人消息表是分离的但是想一起提取出来并显示的话就可以如此处理。通过MySQLUNION联合查询出来即可;
你要union两个表,就必须满足这两个表的字段名字都是一样的才行。首先,你的B表字段只有x,y两个,(select (*,z) from b) 这样写就已经不对了,因为Z字段不存在,应该是(select (*,'' as z) from b)。
最好就改成:select x,y,z from a union select x,y,'' as z from b ,这样就OK啦!

譬如:
function getdateorders($innid,$begindate,$enddate)
{
    global $_SGLOBAL,$_SC;
    $str_begin=$begindate;
    $str_end=$enddate;
    
    $orderstatus=$_SC["innorder_orderstatus"]["new"];
    $checkinstatus=$_SC["checkin_itemstatus"]["checkedin"];
    
    
    $sql="select min(groupid) as gid, min(id) as id,innid as innid,checkindate as d,roomid as roomid,count(1) as c,case itemstatus when 1 then 'checkedin' when 2 then 'checkedout' end as type  from inn_checkin where (checkindate) between '$begindate' and '$enddate' and innid=$innid
            group by checkindate,roomid,innid
            union
            select '0' as gid,id,innid as innid,arrivedate as d,roomid as roomid,nights as c,'ordered' as type from inn_order where arrivedate>='$begindate' and arrivedate<'$enddate' and orderstatus='$orderstatus'
            order by gid,d";  
 
    //print($sql);        
    $query = $_SGLOBAL['db']->query($sql);
    while($value = $_SGLOBAL['db']->fetch_array($query)) {
        $return_arr[] = $value;
    }
    return $return_arr;
    
}

MySQL中union和order by一起使用的方法

MySQL中union和order by是可以一起使用的,但是在使用中需要注意一些小问题,下面通过例子来说明。首先看下面的t1表。   1、如果直接用如下sql语句是会报错:Inc...
  • w355474326
  • w355474326
  • 2017年06月28日 08:55
  • 276

Mysql子查询、UNION操作

子查询: 1.WHERE型子查询 指把内层查询的结果作为外层查询结果的比较条件。 例如:我们查询一个货物id的最大的那一个值可以通过order by来查询,如: 那么,如果不能用order...
  • FreeeLinux
  • FreeeLinux
  • 2016年11月21日 23:16
  • 864

mysql通过将or改成union来优化sql性能问题一例

某系统测试环境有支SQL执行时间较长,开发人员请求dba协助优化。 原SQL如下: SELECT   g.id,           ----省略-----     FROM    g,  ...
  • zengxuewen2045
  • zengxuewen2045
  • 2016年10月27日 22:49
  • 2435

SQL用了Union后的排序问题

最近使用SQL语句进行UNION查询,惊奇的发现:SQL没问题,UNION查询也没问题,都可以得到想要的结果,可是在对结果进行排序的时候,却出问题了。...
  • sinat_35861727
  • sinat_35861727
  • 2017年03月24日 11:00
  • 6069

SQL中UNION使用实例

实例使用表 使用UNION合并查询结果集 SELECT id,name,age,classid,score FROM tb_Student WHERE age...
  • tiana0
  • tiana0
  • 2013年11月24日 18:01
  • 7279

union的特性,去重与不去重

union的特性,去重与不去重 集合操作有 并,交,差 3种运算。   union :得到两个查询结果的并集,并且自动去掉重复行。不会排序   union all:得到两...
  • kingmax54212008
  • kingmax54212008
  • 2014年06月23日 20:23
  • 10987

Sql UNION 合并多个结果集并排序

1.建表语句及测试数据: --创建表A CREATE TABLE A( A1 int NULL, A2 nvArchAr(50) NULL, A3 decimAl(18, 0) NULL ) ...
  • a497785609
  • a497785609
  • 2013年12月03日 20:14
  • 14557

Hibernate如何实践union,order by,分页功能共存

hibernate的  HQL是不支持union语句的。所以,我们只能使用原生态SQL语句来做~ 问题是,不但要查出语句,还要封装成对象供应页面显示,这时,我们可以使用HQL的addScalar和se...
  • zhbitxhd
  • zhbitxhd
  • 2014年03月22日 16:43
  • 7533

UNION ALL的排序分页问题

SQLSERVER中分页语句通常需要排序,如果同时要对UNION ALL子句排序的话就会遇到一些问题,看看如何来解决....
  • Sai_1
  • Sai_1
  • 2015年09月02日 11:03
  • 1976

Mysql的存储引擎之:MERGE存储引擎

Merge是基于MyISAM存储引擎的表,所以Merge存储引擎也叫做MGR_MyISAM存储引擎,作用是将一组MyISAM存储引擎的表聚合成一张表。   Merge中要聚合的MyISAM表的列和索引...
  • fly43108622
  • fly43108622
  • 2015年09月02日 17:24
  • 722
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql中UNION使用的问题 --乐杨俊
举报原因:
原因补充:

(最多只允许输入30个字)