假设我有一个包含以下值的表:
ID | role | group | name
--------------------------
1 | A | A | John
2 | B | A | Paul
3 | C | A | Mary
4 | A | B | Peter
5 | B | B | Mark
6 | C | B | May
7 | A | C | Sam
8 | B | C | Samson
9 | C | C | Naomi
然后,假设我希望B组中的用户角色为A,C组中的用户为角色C,我可以编写如下SQL:
select * from my_table
where (role = 'A' and group = 'B')
or (role = 'C' and group = 'C')
这样可行,但问题是在实际情况下,这些集合将由用户设置,并且会有很多集合。通常,如果那只是单值查询,我可以这样做:
select * from my_table where id in (:id_list)
然后我可以直接将一组ID传递给语句。有没有办法可以在多个值中作为一个集合使用?
P.S。我正在使用PHP和oracle数据库,但我认为这应该不重要,因为我要求SQL语句。
答案 0 :(得分:2)
我不知道php,但是你的SQL查询等同于此,如果它以某种方式帮助你。 GROUP
是一个sql关键字,我将其更改为grp
SELECT *
FROM my_table
WHERE ( role, grp ) IN ( ( 'A', 'B' ), ( 'C', 'C' ) );