使用UNION法进行多表查询的注意事项

假设有两个字段完全一致的表,table1table2。字段分别为password, username, email
则使用UNION(或UNION ALL)进行多表查询的基本方法就是简单的连接:

 SELECT password,username,email
 FROM 
 table1 
 where username like '123' 
 
 UNION ALL //或用UNION以去除重复数据
 
 SELECT password,username,email
 FROM 
 table2 
 where username like '123' 

但是,如果表与表的字段不同,有重叠却不完全一致。就不是简单地用UNION来连接即可了。
要UNION两个或多个表,必须满足的条件就是这些表的字段都一样。为了满足这个条件,可以用","来代替缺少的字段。
例如:table1中有字段password,username,email,ip;table2中有字段password,username。则查询方法如下:

 
   /**
* mysql union
* coder:
* Jan 2015
*/

SELECT password,username,email,ip FROM table1 where username like '123' UNION ALL SELECT password,username,',',',' FROM table2 where username like '123'

以此类推。

--
PS: 抱歉各位,我撤下了评论回复邮件通知的功能,望周知。
因为SMTP插件在数据库中留下邮箱密码造成了一定危险。至于为什么会造成危险,咳咳,那就要问问我某位亲密无间的好朋友了。
最后,祝大家新年快乐~

67 Comments

Name *

E-mail *

Website

  1. 任务易

    感觉你的模版好简洁