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