zoukankan      html  css  js  c++  java
  • 合并多个结果集

    union, union all 可以将多个查询产生的结果合并为一个集合。

    区别:前者合并后会去年重复的记录,并且对结果集进行排序;后者不会去年重复记录,如果需要排序,则要在最后一个有union的子句中使用order by以指定排序方式。

    要求:每个结果集必须有类似的数据相似的字段数目,且在选择列表中字段顺序相同的情况下才能使用。

    eg: select * from tableaa union [all] select * from tablebb; (tableaa and tablebb with same data stucture).

    如果您想使用ORDER BY或LIMIT子句来对全部UNION结果进行分类或限制,则应对单个地SELECT语句加圆括号,并把ORDER
    BY或LIMIT放到最后一个的后面:
    (SELECT a FROM tbl_name WHERE a=10 AND B=1) UNION
    (SELECT a FROM tbl_name WHERE a=11 AND B=2) ORDER BY a LIMIT 10;
    麻烦一点也可以这么干:
    select userid from (select userid from testa union all select userid from testb) t order by userid limit 0,10;

    如果你还想group by,而且还有条件,那么:
    select userid from (select userid from testa union all select userid from testb) t group by userid having count(userid)=2;

    注意:在union的括号后面必须有个别名,否则会报错

    当然了,如果当union的几个表的数据量很大时,建议还是采用先导出文本,然后用脚本来执行
    因为纯粹用sql,效率会比较低,而且它会写临时文件,如果你的磁盘空间不够大,就有可能会出错
    Error writing file '/tmp/MYLsivgK' (Errcode: 28)

  • 相关阅读:
    c++中vector的用法详解[转]
    C++ String
    va_list用法
    如何高效的分析AWR报告
    Oracle存储过程跟踪错误的方法
    Oracle找出锁,并KILL掉
    OracleAWR报告概念和生成
    Linux系统的内存管理
    AIX系统下配置FTP服务
    通过修改注册表配置IE选项
  • 原文地址:https://www.cnblogs.com/gogojiayou/p/3274879.html
Copyright © 2011-2022 走看看