使用%和IN子句进行查询

时间:2014-08-26 18:35:55

标签: mysql sql

我一直在寻找这个答案,但找不到,问题是这个。

这是表格

USER    | PERMISSION
PEDRO   | ALL
BARBARA | READ - WRITE
FULANO  | WRITE

它是一个例子表,我想要的是查询所有拥有ALL权限的用户以及拥有该页面所需权限的任何用户,例如使用IN读取或写入

我正在使用它:

select * from senha where permission IN ('read', 'all')

它只询问“pedro”,因为它有所有,而不是“barbara”,因为它有更多的单词只是READ,试过这个但没有成功

select * from senha where permission IN ('%read%', 'all')

1 个答案:

答案 0 :(得分:2)

使用LIKE无法实现IN类行为。使用OR组合这两个子句:

SELECT * FROM senha 
WHERE (permission = 'ALL' OR permission LIKE '%READ%')

至于您修改过的问题,查询将是:

SELECT * FROM senha
WHERE user  = 'PEDRO' AND 
      senha = 'TEST'  AND 
      (permission = 'ALL' OR permission LIKE '%READ%')

话虽如此,我宁愿规范权限,例如:

USER    | PERMISSION
--------+-----------
PEDRO   | ALL
BARBARA | READ
BARBARA | WRITE
FULANO  | WRITE