数据库教程:MySQL union 语法代码示例分析分享

上述就是数据库技术:MySQL union 语法代码示例分析分享的全部内容,如果对大家有所用处且需要了解更多关于mysql数据库学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)! 代码如下:
SELECT…
UNION[ALL|DISTINCT]
SELECT…
[UNION[ALL|DISTINCT]
SELECT…]
SELECT…UNION[ALL|DISTINCT]SELECT…[UNION[ALL|DISTINCT]SELECT…]

UNION用于把来自许多SELECT语句的结果组合到一个结果集合中。(如果你要将多个表的查询结果进行合并输出比如说群组消息跟个人消息表是分离的但是想一起提取出来并显示的话就可以如此处理。通过MySQLUNION联合查询出来即可)
列于每个SELECT语句的对应位置的被选择的列应具有相同的类型(前提条件是两个SELECT出来的列类型要保持一样的才行!)。(例如,被第一个语句选择的第一列应和被其它语句选择的第一列具有相同的类型。)在第一个SELECT语句中被使用的列名称也被用于结果的列名称。
SELECT语句为常规的选择语句,但是受到如下的限定:
只有最后一个SELECT语句可以使用INTOOUTFILE。
HIGH_PRIORITY不能与作为UNION一部分的SELECT语句同时使用。如果您对第一个SELECT指定了HIGH_PRIORITY,则不会起作用。如果您对其它后续的SELECT语句指定HIGH_PRIORITY,则会产生语法错误。
如果您对UNION不使用关键词ALL,则所有返回的行都是唯一的,如同您已经对整个结果集合使用了DISTINCT。如果您指定了ALL,您会从所有用过的SELECT语句中得到所有匹配的行。
DISTINCT关键词是一个自选词,不起任何作用,但是根据SQL标准的要求,在语法中允许采用。(在MySQL中,DISTINCT代表一个共用体的默认工作性质。)
您可以在同一查询中混合UNIONALL和UNIONDISTINCT。被混合的UNION类型按照这样的方式对待,即DISTICT共用体覆盖位于其左边的所有ALL共用体。DISTINCT共用体可以使用UNIONDISTINCT明确地生成,或使用UNION(后面不加DISTINCT或ALL关键词)隐含地生成。
如果您想使用ORDERBY或LIMIT子句来对全部UNION结果进行分类或限制,则应对单个地SELECT语句加圆括号,并把ORDERBY或LIMIT放到最后一个的后面。以下例子同时使用了这两个子句:
代码
(SELECTaFROMtbl_nameWHEREa=10ANDB=1)UNION(SELECTaFROMtbl_nameWHEREa=11ANDB=2)ORDERBYaLIMIT10;
(如果想要实现分页的话可以这样处理将两个查询的结果集当作是一个大的结果集处理然后再对此大的结果集进行LIMIT处理即可实现!)好好好~!
(SELECTaFROMtbl_nameWHEREa=10ANDB=1)MySQLUNION(SELECTaFROMtbl_nameWHEREa=11ANDB=2)ORDERBYaLIMIT10;
这种ORDERBY不能使用包括表名称(也就是,采用tbl_name.col_name格式的名称)列引用。可以在第一个SELECT语句中提供一个列别名,并在ORDERBY中参阅别名,或使用列位置在ORDERBY中参阅列。(首选采用别名,因为不建议使用列位置。)
另外,如果带分类的一列有别名,则ORDERBY子句必须引用别名,而不能引用列名称。以下语句中的第一个语句必须运行,但是第二个会运行失败,出现在’orderclause’中有未知列’a’的错误:
代码
代码如下:
(SELECTaASbFROMt)UNION(SELECT…)ORDERBYb;
(SELECTaASbFROMt)UNION(SELECT…)ORDERBYa;
ToapplyORDERBYorLIMITtoanindividualSELECT,
placetheclauseinsidetheparenthesesthatenclosetheSELECT:
(SELECTaASbFROMt)UNION(SELECT…)ORDERBYb;
(SELECTaASbFROMt)UNION(SELECT…)ORDERBYa;
ToapplyORDERBYorLIMITtoanindividualSELECT,
placetheclauseinsidetheparenthesesthatenclosetheSELECT:

为了对单个SELECT使用ORDERBY或LIMIT,应把子句放入圆括号中。圆括号包含了SELECT:
代码
代码如下:
(SELECTaFROMtbl_nameWHEREa=10ANDB=1ORDERBYaLIMIT10)
UNION(SELECTaFROMtbl_nameWHEREa=11ANDB=2ORDERBYaLIMIT10);
(SELECTaFROMtbl_nameWHEREa=10ANDB=1ORDERBYaLIMIT10)
UNION(SELECTaFROMtbl_nameWHEREa=11ANDB=2ORDERBYaLIMIT10);

二实例扩展
MySQLunion可以对同一个表的两次查询联合起来.这样 做的益处也非常明显,比如在blog应用中,可以利用一条sql语句实现置顶blog和普通blog的分页显示.
代码
代码如下:
(
SELECT*
FROM`blog`
WHEREtop=1
ORDERBYcreatedDESC
)
UNION(
SELECT*
FROM`blog`
WHEREtop=0
ORDERBYcreatedDESC
)LIMIT2,3

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/910087.html

(0)
上一篇 2021年10月23日
下一篇 2021年10月23日

精彩推荐