============ ОПЕРАТОР IN ===============
Оператор IN определяет набор значений в которое данное значение
может или не может быть включено.Если вы хотите найти всех продавцов, которые размещены в Barcelona или в
London, вы должны использовать следующий запрос ( вывод показывается в Рисунке 5.1 ):
SELECT * FROM Salespeople WHERE city = 'Barcelona' OR city = 'London';
Имеется и более простой способ получить
ту же информацию:
SELECT * FROM Salespeople WHERE city IN ( 'Barcelona', 'London' );
Вывод для этого запроса
показывается в Рисунке 5.2. Как вы можете видеть, IN определяет набор значений с помощью имен членов набора
заключеных в круглые скобки и отделенных запятыми. Он затем проверяет различные значения указанного поля
пытаясь найти совпадение со значениями из набора. Если это случается, то предикат верен. Когда наборсодержит
значения номеров а не символов, одиночные кавычки опускаются.
Давайте найдем всех заказчиков относящихся к продав- цам имеющих значения snum = 1001, 1007, и 1004. Вывод
для следующего запроса показан на Рисунке 5.3:
SELECT * FROM Customers WHERE cnum IN (1001, 1007, 1004 );
SELECT * FROM Salespeople WHERE city = 'Barcelona' OR city = 'London';
snum |
sname |
city |
comm |
1001 |
Peel |
London |
0.12 |
1004 |
Motika |
London |
0.11 |
1007 |
Rifkin |
Barcelona |
0.15 |
Рисунок 5.1 Нахождение продавцов в Барселоне и Лондоне
SELECT * FROM Salespeople WHERE city IN ('Barcelona','London');
snum |
sname |
city |
comm |
1001 |
Peel |
London |
0.12 |
1004 |
Motika |
London |
0.11 |
1007 |
Rifkin |
Barcelona |
0.15 |
Рисунок 5.2 SELECT использует IN
SELECT * FROM Customers WHERE snum IN ( 1001, 1007, 1004 );
snum |
cname |
city |
rating |
snum |
2001 |
Hoffman |
London |
100 |
1001 |
2006 |
Clemens |
London |
100 |
1001 |
2008 |
Cisneros |
San Jose |
300 |
1007 |
2007 |
Pereira |
Rome |
100 |
1004 |
Рисунок 5.3: SELECT использует IN с номерами