Изучаем sql


SELECT account_id, product_cd, cust_id, avail_balance



Pdf көрінісі
бет152/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   148   149   150   151   152   153   154   155   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )
论文说明
SELECT account_id, product_cd, cust_id, avail_balance
> FROM account
> WHERE open_emp_id <> (SELECT e.emp_id
> FROM employee e INNER JOIN branch b
> ON e.assigned_branch_id = b.branch_id
> WHERE e.title = 'Teller' AND b.city = 'Woburn');
ERROR 1242 (21000): Subquery returns more than 1 row
Если выполнить только подзапрос, результаты будут такими:
mysql> 
SELECT e.emp_id
> FROM employee e INNER JOIN branch b
> ON e.assigned_branch_id = b.branch_id
> WHERE e.title = 'Teller' AND b.city = 'Woburn';
++
| emp_id |
++
| 11 |
| 12 |
++
2 rows in set (0.02 sec)
Причина сбоя основного запроса в том, что выражение (
open_emp_id
) не
может быть приравнено набору выражений (
emp_id
11 и 12). Другими
словами, единичный элемент не может приравниваться множеству.
В следующем разделе вы увидите, как решить эту проблему с помо
щью другого оператора.
Подзапросы, возвращающие несколько строк 
и один столбец
Если подзапрос возвращает более одной строки, его нельзя использо
вать как одну из частей условия равенства, что и было продемонстри


172
Глава 9. Подзапросы
ровано предыдущим примером. Однако есть четыре дополнительных
оператора, позволяющие строить условия с подзапросами этих типов.
Оператор in
Нельзя 
приравнять 
одно значение набору значений, но можно прове
рить 
наличие 
этого значения 
в
наборе. Следующий пример, хотя и без
подзапроса, показывает, как можно создать условие, использующее
оператор 
in
(в) для поиска значения в наборе значений:
mysql> 
SELECT branch_id, name, city


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




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

    Басты бет