mysql结合查询合并和合并使用介绍
该联盟用于合并两个或多个SELECT语句的结果集,并消除表中的任何重复。
联盟中的SELECT语句必须具有相同的列数,并且列必须具有类似的数据类型。
同时,每个SELECT语句中的列的顺序必须相同。
sql语法:
复制代码如下:选择column_name从表1
联盟
选择column_name从表2
注释:默认情况下,联合操作符选择不同的值。如果允许重复值,则使用联合所有。
当所有与联邦一起使用(即联合全部)时,重复行不会被消除。
sql所有语法
复制代码如下:选择column_name从表1
联盟的所有
选择column_name从表2
注意:此外,并集结果集中的列名总是等于联盟中第一个SELECT语句中的列名。
注意:1,并集结果集中的列名总是等于第一个SELECT语句中的列名。
2,联盟中的SELECT语句必须具有相同的列数。列也必须具有类似的数据类型。同时,每个SELECT语句中的列顺序必须相同。
二、工会的使用和注意事项
联合:联合意味着合并两个或多个查询的结果。
要求:两个查询的列数必须一致。
建议:列的类型可以是不同的,但建议每个列,相应的类型是相同的。
可以来自多个表的数据:多个SQL语句所取的列名可能不一致,此时第一个SQL语句的名称是不正确的。
如果从不同语句中提取的行是完全相同的(这里每个列的值是一样的),联盟将合并相同的行,最后只留下一行,也可以理解联合将删除重复行。
如果您不想删除重复行,可以使用联合所有。
如果子句中有顺序限制,则需要将括号括起来,建议在所有子句之后放置,即对最终合并的结果进行排序或筛选。
如:
复制代码代码如下:(从ID中选择一个*)联盟(从B顺序ID中选择*);
在子句中,需要使用的顺序与限制有意义。如果不与限制一起使用,当解析器优化分析时,它将被删除。
三。学习的一个例子
下面例子中使用的原始表:
employees_china:
复制代码代码如下:e_id e_name
01张,华
02王,魏
03卡特,托马斯
04杨,明
employees_usa:
复制代码代码如下:e_id e_name
01亚当斯,约翰
02布什,乔治
03卡特,托马斯
04门,比尔
使用联合命令实例
列出所有不同的员工的名字在中国和美国:
复制代码如下:选择e_name从employees_china
联盟
选择e_name从employees_usa
结果uff1a
复制代码代码如下:e_name
张,华
王,魏
卡特,托马斯
杨,明
亚当斯,约翰
布什,乔治
盖茨,比尔
注意:此命令不能列出所有的员工在中国和美国。在上面的例子中,我们有两个同名的员工,而其中只有一件是上市。工会命令只会选择不同的值。
使用联合所有命令实例
联邦所有命令和联合命令几乎相等,但联邦所有命令列出所有值。
复制代码如下:SQL语句1
联盟的所有
SQL语句2
实例uff1a
列出所有的员工在中国和美国:
复制代码如下:选择e_name从employees_china
联盟的所有
选择e_name从employees_usa
结果
复制代码代码如下:e_name
张,华
王,魏
卡特,托马斯
杨,明
亚当斯,约翰
布什,乔治
卡特,托马斯
盖茨,比尔
四。项目使用示例
Web项目经常遇到用户在网站搜索框中输入一个词的网页搜索问题,然后整个网站只包含搜索结果中出现的单词页,因为一个Web项目不能全部用一个表来完成,一般使用联合搜索来解决整个问题。
下面是这次使用的联合搜索的SQL语句列表:
复制代码代码如下所示:
SELECT * FROM
(选择` ID `,`主体`从`第`哪里`主动` = '1'and `主体`喜欢按` add_time ` DESC调整图片%。)
T1
联盟的所有
SELECT * FROM
(选择` ID `,` class_name `作为`主体`从` web_class `哪里`主动` = '1'and ` class_name `喜欢按` class_id ` DESC调整图片%。)
T2
联盟
SELECT * FROM
(选择` ID `,`主体`从`第`哪里`主动` = '1'and(`主体`喜欢或`主体` '像'调整%。%。通过` add_time `降序顺序))图片
T3;
上述SQL查询主要用于联合所有和联合。它们之间的不同之处在于联合所有将列出所有合格的查询结果,而联合将执行所有合格的查询结果以删除重复的结果。
上述SQL语句的解释是,文章表和web_class表分属于两个不同的表,因此不需要删除重复的结果。然而,SQL查询的查询的第三个分支是一个查询合并后的分割结果,这肯定是包含SQL查询的SQL查询结果的第一分支,这是没有必要的,所以没有用所有去重复查询结果。