Как использовать несколько значений в где в заявлении SQL? - PullRequest
0 голосов
/ 18 мая 2018

Допустим, у меня есть таблица, содержащая следующие значения:

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)

Затем я могу передать массив идентификаторов непосредственно в оператор.Есть ли способ, которым я могу использовать, где в нескольких значениях в качестве набора?

PS Я использую PHP с базой данных Oracle, но я думаю, что это не должно иметь большого значения, так как я запрашиваю оператор SQL.

1 Ответ

0 голосов
/ 18 мая 2018

Я не знаю php, но ваш SQL-запрос эквивалентен этому, если он вам как-то помогает.GROUP - это ключевое слово sql, я изменил его на grp

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

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...