|
"in select" и "exists"
|
|||
---|---|---|---|
#18+
В чем отличие конструкции "in" и "exists" в sql-запросе? Елси я правильно понял, то следующие два запроса должны выдать один и тот же результат. Если так, то зачем нужен "exist" и использует ли его кто нибудь ? select table1.* from table1 where table1.id in (select table2.id from table2) into table table3 select table1.* from table1 where exists (select table2.* from table2 where table1.id=table2.id) into table table3 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2012, 11:15 |
|
"in select" и "exists"
|
|||
---|---|---|---|
#18+
Лучше всего разницу демонстрирует пример из Help'а (незаслуженно забытого) FPD2.6 для Select-SQL : Формат: [NOT] EXISTS (<подзапрос>) Пример: EXISTS ; (SELECT * FROM invoice WHERE customer.zip = invoice.zip) Проверка на существование по крайней мере одного ряда , удовлетворяющему условию подзапроса. Посредством EXISTS условие фильтрации оценивается как "истина", если только результат подзапроса не является пустым множеством. Формат: <поле> [NOT] IN <набор_значений> Пример: customer.zip NOT IN ('43411','43506','43667') Посредством IN задается условие, что <поле> должно быть частью заданного набора значений, чтобы соответствующая ему запись попала в результат работы запроса. Формат: <поле> [NOT] IN (<подзапрос>) Пример: customer.cust_id IN ; (SELECT tranfile.cust_id FROM tranfile WHERE tranfile.item='FoxPro') В данном случае <поле> должно быть частью набора значений, возвращенных подзапросом, чтобы соответствующая ему запись попала в результат работы запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2012, 12:50 |
|
|
start [/forum/topic.php?fid=41&msg=37843863&tid=1583614]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
190ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 18ms |
total: | 305ms |
0 / 0 |