powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / select в select
9 сообщений из 9, страница 1 из 1
select в select
    #33011775
Igor Gryb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!
MYSQL поддердживает select в selecte
Например.

select ldap_login from `dldapusers`
where ldap_login not in ( select login from personal )
...
Рейтинг: 0 / 0
select в select
    #33011915
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с версии 4.1
...
Рейтинг: 0 / 0
select в select
    #33012414
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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;
...
Рейтинг: 0 / 0
select в select
    #33015112
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
любопытный мануал. Почему-то забыли оговорить, что table2.id обязан быть первичным ключом (ну или not null + unique). Иначе все до единого примеры по сути неверны.
...
Рейтинг: 0 / 0
select в select
    #33015308
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrлюбопытный мануал. Почему-то забыли оговорить, что table2.id обязан быть первичным ключом (ну или not null + unique). Иначе все до единого примеры по сути неверны.
Справочное руководство по MySQL. :: 1.9.4.1 Вложенные SELECTы
...
Рейтинг: 0 / 0
select в select
    #33015315
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Иначе все до единого примеры по сути неверны
Приведите конкретные примеры.
...
Рейтинг: 0 / 0
select в select
    #33015507
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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. Полагаю, это было бы неплохо отразить явно, во избежании перегрева саппорт-форумов.
...
Рейтинг: 0 / 0
select в select
    #33015594
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 dimitr

Полагаю, что люди, которые составляли (переводили) manual
именно подразумевали использование unique + not null.

Согласен с вами, что если поле не unique + not null, то это уже упущение. :)
...
Рейтинг: 0 / 0
select в select
    #33015640
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BerkutПолагаю, что люди, которые составляли (переводили) manual
именно подразумевали использование unique + not null.

Я тоже так полагаю. Тем паче что поле с названием ID обычно именно таким и бывает ;-) Но те, кто переложат данные мысли на все поля без разбору, имеют шанс огрести по полной. За что я и беспокоюсь.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / select в select
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]