SQL语句结果集筛选查询多个表数据

作者:Davidszhou   来源:SEO优化博客   时间:2015-06-11 10:41:32   点击:

         最近一直在使用脚本编辑器在发布外链以及更新站群等工作,感觉还是省了不少力气。

        但今天遇到一个问题:

         我在本地建立SQL数据库,采集了10个表的数据,每一个表的字段都是相同的。脚本编辑器按照SQL语句查询数据发布,按照惯例:字段可以多差,数据库是不是也可以加上','号写一起查询呢?结果不行的,提示错误。

          也百度了一定时间,都是在说多表联合查询,看的是有点头晕,最终找到一个简单可用的方法,SQL语句如下:

select title,content from (select title,content from a2susluoding union all select title,content from a2susluomu union all select title,content from a2susluoshuan union all select title,content from a4sus union all select title,content from carbonsteelliujiaotouluoshuan union all select title,content from jixiezigongzuanwei union all select title,content from tangangneiliujiaoluoding union all select title,content from tghuasedianquan union all select title,content from tghuaseluomu union all select title,content from xiaojianshuangtouluoshuan ) zhou where zhou.title like '%吊环%'

          这个是我最终的SQL查询,唯独在后面条件位置‘zhou’ 是怎么过来的,多试了几次,发现可以是任意值,但是去掉了会提示错误,我是不是可以理解:前面括号里面,查询这几个表数据(当前几个表的字段需要相同,不相同的情况你可以试一试,目前我也是不很明白)放在一个虚拟的表‘zhou’里面,这个虚拟的表的名称是可以任意的,然后后面写条件,从虚拟表‘zhou’里面筛选。或者直接在括号里面每一条的查询语句加筛选条件,将查询的结果集合起来,个人觉得这个办法也是可以的。

        最后分享SQL语句中‘union’ 的意思,摘自互联网:

SQL UNION 操作符

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

SQL UNION 语法

SELECT column_name(s) FROM table_name1  UNION  SELECT column_name(s) FROM table_name2  

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

SQL UNION ALL 语法

SELECT column_name(s) FROM table_name1  UNION ALL  SELECT column_name(s) FROM table_name2  

另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

下面的例子中使用的原始表:

Employees_China:

E_ID E_Name
01 Zhang, Hua
02 Wang, Wei
03 Carter, Thomas
04 Yang, Ming

Employees_USA:

E_ID E_Name
01 Adams, John
02 Bush, George
03 Carter, Thomas
04 Gates, Bill

使用 UNION 命令

实例

列出所有在中国和美国的不同的雇员名:

SELECT E_Name FROM Employees_China  UNION  SELECT E_Name FROM Employees_USA  

结果

E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Gates, Bill

注释:这个命令无法列出在中国和美国的所有雇员。在上面的例子中,我们有两个名字相同的雇员,他们当中只有一个人被列出来了。UNION 命令只会选取不同的值。

UNION ALL

UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。

SQL Statement 1  UNION ALL  SQL Statement 2  

使用 UNION ALL 命令

实例:

列出在中国和美国的所有的雇员:

SELECT E_Name FROM Employees_China  UNION ALL  SELECT E_Name FROM Employees_USA  

结果

E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Carter, Thomas
Gates, Bill

TAGS:SQL语句 , 多表 , UNION , 结果集

来自Davids zhou博客原创文章请尊重作者:http://www.zongk.com/zongk/52.html转载请标注此链接

网站统计
文章总数:129
今天发布:0
软件资源数:18