2014-01-08 44 views
0

我有一个查询,我想运行,但没有返回预期的结果。从2表混淆MySQL查询

所以,我的表是这样的

users (has two columns) 
user_id,name 

users_archive (has the same two columns) 
user_id,name 

我想基本上运行一个查询,从各表列出user_ID的,其中的用户名匹配什么我在寻找

对于我的例子,我有一个名为MikeBOSS在users_archive与123的USER_ID用户(有在用户表中没有MikeBOSS)

SELECT users.user_id, users_archive.user_id 
FROM users 
LEFT JOIN users_archive ON users_archive.name='MikeBOSS' 
WHERE users.name='MikeBOSS'; 

但不返回任何结果

SELECT users.user_id, users_archive.user_id 
FROM users, users_archive 
WHERE (users.name='MikeBOSS' OR users_archive.name='MikeBOSS'); 

从用户表中返回一堆不正确的结果。

可能有人可能指向我正确的方向?

+0

有2个表之间没有关系? – DevelopmentIsMyPassion

回答

1

你不想要一个JOIN,你想要一个UNION。看

SELECT users.user_id, 'users' 
FROM users 
WHERE users.name='MikeBOSS' 
UNION 
SELECT users_archive.user_id, 'archive' 
FROM users_archive 
WHERE users_archive.name='MikeBOSS'; 
+0

非常感谢。你是正确的联盟正是我正在寻找的。我尝试了一些其他JOIN示例,但没有奏效 –

0

连接条件通常链接两个表。你不会:

ON users_archive.name='MikeBOSS' 

连接条件,它链接这两个表可能看起来是这样的:如果你想知道这个行返回,逐个检查每个表的数量

ON users.name = users_archive.name 

。是否有与在users_archivename = 'MikeBoss'甚至一排?

0

变化

SELECT users.user_id, users_archive.user_id 
FROM users 
LEFT JOIN users_archive ON users_archive.name='MikeBOSS' 
WHERE users.name='MikeBOSS'; 

SELECT users.user_id, users_archive.user_id 
FROM users 
LEFT JOIN users_archive ON users.name = users_archive.name WHERE users.name='MikeBOSS'; 
0

可能是,如果你有2个表之间没有关系这可能是工作。使用左连接可以从一张表中记录下来,即使它不存在于其他表中。

SELECT users.user_id, users_archive.user_id 
FROM users 
LEFT JOIN users_archive ON users.userid = users_archive.userid and users.name = users_archive.name 
WHERE users.name='MikeBOSS';