从2个表进行MySQL查询

从2个表进行MySQL查询,mysql,sql,join,multiple-tables,Mysql,Sql,Join,Multiple Tables,我有一个要运行的查询,但未返回预期结果 所以我的桌子是这样的 users (has two columns) user_id,name users_archive (has the same two columns) user_id,name 我希望基本上运行一个查询,列出用户名与我搜索的内容匹配的相应表中的用户id 例如,我在users_archive中有一个名为MikeBOSS的用户,其用户id为123(users表中没有MikeBOSS) 但这没有结果 SELECT users.us

我有一个要运行的查询,但未返回预期结果

所以我的桌子是这样的

users (has two columns)
user_id,name

users_archive (has the same two columns) 
user_id,name
我希望基本上运行一个查询,列出用户名与我搜索的内容匹配的相应表中的用户id

例如,我在users_archive中有一个名为MikeBOSS的用户,其用户id为123(users表中没有MikeBOSS)

但这没有结果

SELECT users.user_id, users_archive.user_id 
FROM users, users_archive 
WHERE (users.name='MikeBOSS' OR users_archive.name='MikeBOSS');
这将从users表返回一组不正确的结果


有人能给我指出正确的方向吗?

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

ON users_archive.name='MikeBOSS' 
链接两个表的连接条件可能类似于:

ON users.name = users_archive.name
如果您想知道返回的行数,请逐个检查每个表。在
users\u archive
表中是否有一行名称为“MikeBoss”

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


如果两个表之间没有关系,这可能会起作用。使用left join可以从一个表中获得记录,即使它不存在于另一个表中

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';

你不想要加入,你想要一个联盟。看

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';

两张桌子之间没有关系吗?非常感谢。你说得对,工会正是我想要的。我尝试了其他一些连接示例,但没有成功
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';
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';