2015-07-12 43 views
1

我想联合选择3个表:admin_table,moderator_table,user_table。MySQL联合选择3表错误

三者共享相同的列:uid,用户名,密码。

这里是他们的内容。

admin_table 
uid | username | password 
--------------------------------------- 
1001 | admin01 | [email protected] 


moderator_table 
uid | username | password 
--------------------------------------- 
2001 | mod01  | jb#0NAL837AjLj 


user_table 
uid | username | password 
--------------------------------------- 
3001 | user01 | sdndLaKn$RfGK: 

的问题是,当我执行这个查询:

SELECT * FROM admin_table UNION SELECT * FROM moderator_table UNION SELECT * FROM user_table WHERE username = "admin01"; 

结果是

uid | username | password 
--------------------------------------- 
1001 | admin01 | [email protected] 
2001 | mod01  | jb#0NAL837AjLj 

,你可以看到MOD01正在出现,而我的查询语句,以显示与用户名的条目是'admin01'..我已经尝试删除表格并创建一个新的表格,但它仍然执行相同的输出。我希望有人能帮助我。谢谢

+0

您正在选择版主表中没有where子句的所有内容。最后的where子句适用于第三个查询(仅在user_table上),它们联合在一起,这就是停止添加user01条目 – amdixon

+0

我明白了。我试了一下,它的工作。猜我看的指南缺乏信息。谢谢先生:) –

+0

你确定你需要3个单独的表吗? – Strawberry

回答

0

WHERE子句只适用于最后一个UNION。

如何:
SELECT * FROM admin_table其中username = “admin01”
UNION
SELECT * FROM moderator_table其中username = “admin01”
UNION
SELECT * FROM USER_TABLE其中username = “admin01”