繁体   English   中英

SQL:检查tbl1或tbl2中的值是否可用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM