我一直在寻找这个答案,但找不到,问题是这个。
这是表格
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')
答案 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