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用户授权 操作 乐杨俊

1:MySQL用户授权 登录MySQL数据库:MySQL -uroot -p123 --Eg:MySQL -uroot -p123 -h192.168.10.1(当前mysql登录链接主服务...

php curl的详细使用 乐杨俊

php curl的详细使用

乐杨俊

乐杨俊

李开复确认罹患癌症:已开始接受治疗 新闻转载:乐杨俊

创新工场联合创始人、新闻发言人王肇辉发微博证实,李开复被诊断出癌症,“很遗憾的告知大家,开复被诊断出癌症。目前正在遵医嘱接受治疗。谢谢大家的关心。 ” 【IT商业新闻网综合讯】(记者 林...

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

某系统测试环境有支SQL执行时间较长,开发人员请求dba协助优化。 原SQL如下: SELECT   g.id,           ----省略-----     FROM    g,  ...

Oracle SQL使用笛卡尔连接、正则表达式和层次查询、union all、unpiovt 解决多列值筛选、列转行问题

Oracle SQL使用笛卡尔连接、正则表达式和层次查询、union all、unpiovt 解决多列值筛选、列转行问题...
  • Seandba
  • Seandba
  • 2017年05月22日 20:23
  • 516

Mysql中使用UNION语句进行多表连接查询

用PHP编写了几个网页,直接使用内置函数链接Mysql数据库。在实用中遇到一个需求:有几个内容相类似的表(存放了新闻、公告类文章),想要以某些条件做出在几个表上的共同查询和排序模块。 例如以文章的点...
  • as66t
  • as66t
  • 2013年04月10日 07:34
  • 22296

MYSQL注入过程中UNION在不同环境的使用注意事项

注入过程中经常会遇到UNION,很多人使用时会报错,主要是不熟悉UNION的使用规则,以下分别对UNION在不同数据库下的使用注意事项解说。 1.关于UNION 与 ORDER BY 1.1 SQ...
  • ty_soft
  • ty_soft
  • 2011年11月06日 11:13
  • 2011

union 和order by 连接使用报错的问题

今天写sql的时候,遇到一个奇怪的现象,分别执行的时候可以成功执行,但是union连接之后却会报错。 --前面的sql select count(distinct u.trade_id) as...

MySQL中子查询IN,EXISTS,ANY,ALL,SOME,UNION介绍

转自:http://www.cnblogs.com/blueoverflow/archive/2015/08/08/4712320.html 阅读目录(Content) 1.ANY关键字2.ALL关...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql中UNION使用的问题 --乐杨俊
举报原因:
原因补充:

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