|
|
|
select в select
|
|||
|---|---|---|---|
|
#18+
Привет! MYSQL поддердживает select в selecte Например. select ldap_login from `dldapusers` where ldap_login not in ( select login from personal ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2005, 18:50 |
|
||
|
select в select
|
|||
|---|---|---|---|
|
#18+
MySQL manual 1.9.4.1 Вложенные SELECTы В сервер MySQL поддерживает вложенные запросы вида INSERT ... SELECT ... и REPLACE ... SELECT .... В других контекстах можно использовать и функцию IN(). Вложенные операции выборки реализованы в версии 4.1. Между тем, во многих случаях можно переписать запрос, чтобы не использовать вложенную выборку. Например, запрос: SELECT * FROM table1 WHERE id IN (SELECT id FROM table2); можно переписать следующим образом: SELECT table1.* FROM table1,table2 WHERE table1.id=table2.id; Запросы: SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2); SELECT * FROM table1 WHERE NOT EXISTS (SELECT id FROM table2 WHERE table1.id=table2.id); эквивалентны следующему: SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2005, 09:59 |
|
||
|
select в select
|
|||
|---|---|---|---|
|
#18+
любопытный мануал. Почему-то забыли оговорить, что table2.id обязан быть первичным ключом (ну или not null + unique). Иначе все до единого примеры по сути неверны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2005, 10:36 |
|
||
|
select в select
|
|||
|---|---|---|---|
|
#18+
dimitrлюбопытный мануал. Почему-то забыли оговорить, что table2.id обязан быть первичным ключом (ну или not null + unique). Иначе все до единого примеры по сути неверны. Справочное руководство по MySQL. :: 1.9.4.1 Вложенные SELECTы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2005, 11:33 |
|
||
|
select в select
|
|||
|---|---|---|---|
|
#18+
> Иначе все до единого примеры по сути неверны Приведите конкретные примеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2005, 11:35 |
|
||
|
select в select
|
|||
|---|---|---|---|
|
#18+
manualSELECT * FROM table1 WHERE id IN (SELECT id FROM table2); можно переписать следующим образом: SELECT table1.* FROM table1,table2 WHERE table1.id=table2.id; Если поле TABLE2.ID не уникально, то джойн вернет больше записей, чем вариант с IN-подзапросом. manualЗапросы: SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2); SELECT * FROM table1 WHERE NOT EXISTS (SELECT id FROM table2 WHERE table1.id=table2.id); эквивалентны следующему: SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL; Первые два запроса вообще вернут разные результаты, если поле TABLE2.ID содержит NULLы. Т.е. дока права только для случая unique + not null. Полагаю, это было бы неплохо отразить явно, во избежании перегрева саппорт-форумов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2005, 12:21 |
|
||
|
select в select
|
|||
|---|---|---|---|
|
#18+
2 dimitr Полагаю, что люди, которые составляли (переводили) manual именно подразумевали использование unique + not null. Согласен с вами, что если поле не unique + not null, то это уже упущение. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2005, 12:45 |
|
||
|
select в select
|
|||
|---|---|---|---|
|
#18+
BerkutПолагаю, что люди, которые составляли (переводили) manual именно подразумевали использование unique + not null. Я тоже так полагаю. Тем паче что поле с названием ID обычно именно таким и бывает ;-) Но те, кто переложат данные мысли на все поля без разбору, имеют шанс огрести по полной. За что я и беспокоюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2005, 12:55 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=33015640&tid=1854158]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 521ms |

| 0 / 0 |
