Изучаем sql


SELECT emp_id, fname, lname, title



Pdf көрінісі
бет155/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   151   152   153   154   155   156   157   158   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

SELECT emp_id, fname, lname, title
> FROM employee
> WHERE emp_id <> ALL (SELECT superior_emp_id
> FROM employee
> WHERE superior_emp_id IS NOT NULL);
+++++
| emp_id | fname | lname | title |
+++++
| 2 | Susan | Barker | Vice President |
| 5 | John | Gooding | Loan Manager |


Несвязанные подзапросы
175
| 7 | Chris | Tucker | Teller |
| 8 | Sarah | Parker | Teller |
| 9 | Jane | Grossman | Teller |
| 11 | Thomas | Ziegler | Teller |
| 12 | Samantha | Jameson | Teller |
| 14 | Cindy | Mason | Teller |
| 15 | Frank | Portman | Teller |
| 17 | Beth | Fowler | Teller |
| 18 | Rick | Tulman | Teller |
+++++
11 rows in set (0.05 sec)
И опять подзапрос возвращает набор ID сотрудников, имеющих подчи
ненных. Основной запрос возвращает данные для всех сотрудников,
ID которых не равны ни одному возвращенному подзапросом ID. Ина
че говоря, запрос находит всех сотрудников«неруководителей». Если
этот подход кажется вам несколько топорным, вы не одиноки; многие
предпочли бы построить запрос подругому, обойдясь без оператора
all
. Например, результаты этого запроса аналогичны последнему при
меру с оператором 
not
in
из предыдущего раздела. Дело вкуса, но, ду
маю, что этим многим версия с 
not
in
просто кажется более понятной.
Сравнивать значения с набором значений с помощью операто
ров 
not
in
или 
<>
all
нужно аккуратно, убедившись, что в наборе
нет значения 
null
. Сервер приравнивает значение из левой час
ти выражения к каждому члену набора, и любая попытка при
равнять значение к 
null
дает в результате 
unknown
. Таким обра
зом, следующий запрос возвратит пустой набор:
mysql> SELECT emp_id, fname, lname, title
> FROM employee
> WHERE emp_id NOT IN (1, 2, NULL);
Empty set (0.00 sec)
Бывают случаи, когда оператор 
all
чуть более естественен. Следую
щий пример использует 
all
для поиска счетов, доступный остаток ко
торых меньше, чем на любом из счетов Фрэнка Такера (Frank Tucker):
mysql> 


Достарыңызбен бөлісу:
1   ...   151   152   153   154   155   156   157   158   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет