MySQL如果条件在where子句中查询

时间:2017-02-26 23:35:52

标签: mysql

我有一个如下表格和一个USR表格,其中显示用户是管理员或普通用户。在这种情况下,USR_ID:1为admin

EMP_ID     Terminated    EMP_Name      EMP_Loc
  1         0            John         Caster
  2         1            Sally        Jules
  3         0            Steven        James

这是一个EMP数据库表,EMP#2终止,当普通用户查询数据库时,不应显示已终止的员工,当管理员查询数据库时,我想显示所有员工包括已终止员工。

这是我的查询

 select * from EMP join USR on USR.ID = EMP.EMP_ID
 where (IF USR.ID = '1',terminated='1',terminated in ('0','1')) 

但此查询仅显示非终止用户,即使对于管理员用户

也是如此

3 个答案:

答案 0 :(得分:0)

你可以在你的任何地方使用OR,比如

select * from EMP join USR on USR.ID = EMP.EMP_ID
where (USR.ID = '1' and terminated='1') or (USR.ID <> '1' and terminated in ('0','1')) 

答案 1 :(得分:0)

SELECT * 
FROM   EMP 
       INNER JOIN USR ON USR.ID = EMP.EMP_ID
WHERE
       (USR.ID = '1' AND Terminaded = '1') OR (USR.ID <> '1')

答案 2 :(得分:0)

根据您的要求,您可以尝试:

select * 
from EMP join USR on USR.ID = EMP.EMP_ID
where (USR.ID <> '1' and Terminated = '1') or (Terminated in ('0', '1'))

如果Terminated只有两个值“0”或“1”,则可以删除or子句:

select * 
from EMP join USR on USR.ID = EMP.EMP_ID
where (USR.ID <> '1' and Terminated = '1')