如何在SQL语句中使用多个值?

时间:2018-05-18 10:59:48

标签: php sql oracle

假设我有一个包含以下值的表:

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语句。

1 个答案:

答案 0 :(得分:2)

我不知道php,但是你的SQL查询等同于此,如果它以某种方式帮助你。 GROUP是一个sql关键字,我将其更改为grp

SELECT * 
FROM   my_table 
WHERE  ( role, grp ) IN ( ( 'A', 'B' ), ( 'C', 'C' ) ); 

Demo