![](/img/trans.png)
[英]MySQL SELECT * FROM tbl1 WHERE smth AND a field from another table is something
[英]SQL: Check if value is available in tbl1 or tbl2
我想创建一个子帐户系统(PHP和MYSQL)。
我有一个用户表(用户)和一个子用户表(sub_users)。
如何检查用户表或子用户表中的用户是否可用?
我的代码:
SELECT DISTINCT *
FROM users
WHERE userid = "steven"
OR WHERE EXISTS (SELECT *
FROM sub_users
WHERE sub_users.userid = "steven");
错误:检查“ steven”附近的语法
还尝试了:
SELECT *
FROM users
LEFT JOIN sub_users
ON sub_users.user_userid = users.userid
WHERE users.userid = 'steven'
OR sub_users.userid = 'steven'
同样的错误。
首先,您只需要一个where
子句。 我也将使用单引号而不是双引号:
SELECT DISTINCT *
FROM users
WHERE userid = 'steven' or
EXISTS (SELECT *
FROM sub_users
WHERE sub_users.userid = 'steven'
);
如果您要从users
提取所有列,我怀疑您是否需要distinct
关键字。
您的第二个查询看起来还可以。 您确定您没有两次运行第一个查询吗?
编辑:
我正在尝试弄清楚您想要返回的内容。 如果'steven'
出现在任一表中,则以下命令返回1,否则返回0:
select (case when exists (select 1 from users where users.userid = 'steven') and
exists (select 1 from sub_users where sub_users.userid = 'steven')
then 1
else 0
end);
此方法节省了join
的开销,并且将很容易利用users(userid)
和sub_users(userid)
上的索引。
select * from
(select * from users) x,
(select * from sub_users) y
where x.user_id = 'steven' or y.user_id = 'steven'
祝好运 !!!
您还可以使用联合:
(SELECT userid FROM users WHERE userid = 'steven')
UNION
(SELECT userid FROM sub_users WHERE userid = 'steven');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.