我有一个想要运行的查询,但没有返回预期的结果。
所以我的表就像这样
users (has two columns)
user_id,name
users_archive (has the same two columns)
user_id,name
我想基本上运行一个查询,该查询列出了相应表中的user_id,其中用户名与我正在搜索的内容相匹配
对于我的示例,我在users_archive中有一个名为MikeBOSS的用户,user_id为123(用户表中没有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');
返回来自users表的一堆不正确的结果。
有人可能会指出我正确的方向吗?
答案 0 :(得分: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';
答案 1 :(得分:0)
连接条件通常链接两个表。你的不是:
ON users_archive.name='MikeBOSS'
链接两个表的连接条件可能类似于:
ON users.name = users_archive.name
如果您想知道它返回的行数,请分别检查每个表。 name = 'MikeBoss'
表中是否还有users_archive
行?
答案 2 :(得分: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';
答案 3 :(得分: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';