|
|
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
envЭта та самая комната с красными драконами? Это комната в которой все драконы красные и им жутко интересен наш спор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2017, 14:34 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
nxxFogelпропущено... хорошо, а почему сделали-то так ? где логика ? Логика здесь так стоит Оператор вида Код: plsql 1. развертывается так: (subquery) интерпретируется как множество X: Код: plsql 1. =>y compare_op ALL (subquery) = y compare_op ALL (X) compare_op ALL развертывается так: Код: plsql 1. [не существует такого элемента x в множестве X, определяемым результатом выполнения subquery, для которого (y compare_op x) != true ] Поэтому для Код: plsql 1. результат сравнения - Истина (в множестве результатов возвращаемых (select 1 from dual where 1=0) нет элементов, поэтому не существует даже кандидата на то, чтобы дать Ложь при сравнении с 999. Элемента, способного не дать истину при сравнении с 999, не существует). Наоборот, Код: plsql 1. развертывается как Код: plsql 1. Из этого следует, например, что Код: plsql 1. эквивалентно Код: plsql 1. Но Код: plsql 1. не эквивалентно Код: plsql 1. Для ANY в этом случае достаточно существования хотя бы одного элемента {x:(subquery)} для которого Код: plsql 1. , а NOT IN разворачивается NOT (y = ANY (subquery)), т.е. (y != x) = true должно выполнится для каждого x из subquery. т.е. NOT IN эквивалентен y != ALL(subquery) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2017, 15:11 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39522783&tid=1885234]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
176ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 520ms |

| 0 / 0 |
