Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор записей из т1, чтобы таких не было в т2 
:(
    Опции темы
godsgame
  Дата 22.7.2006, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 29.8.2005

Репутация: нет
Всего: нет



Выбираю записи в таблице1, но нужно выбрать эти записи так, чтобы записи с таким же ИД (поле) не существовало в таблице2.
Можно ли обойтись 1 запросом?

пример:
таблица1: (ИД, ТЕКСТ)
1, 123
2, 456
3, 799

Таблица2:
1, 123
3, 799

Выбирет ТОЛЬКО 2-ую (2, 456) запись в таблице1.
 
PM MAIL   Вверх
Gold Dragon
Дата 22.7.2006, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 2
Всего: 71



по моему так (нет возможность проверить сейчас)
Код

SELECT * FROM таблица1, таблица2 WHERE таблица1.id!=таблица2.id


Добавлено @ 23:02 

в общем что-то написал какую то ерунду, не работает  smile 

вот
Код

SELECT * FROM таблица1 WHERE id NOT IN (SELECT `id` FROM таблица2)
 


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
godsgame
Дата 23.7.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 29.8.2005

Репутация: нет
Всего: нет



Gold Dragon, 
спасибо, работает! 
PM MAIL   Вверх
Drache
Дата 24.7.2006, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 31.3.2006

Репутация: 1
Всего: 3



вообще можно так сказать "специально" для таких целей есть left join.
Ну он то может и не сспециально для атких целей, но в таких случаях точно применяется.

select * from t1 left join t2 using(id) where t2.id is null 
PM MAIL   Вверх
Ignat
Дата 24.7.2006, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



godsgame, рекомендую воспользоваться советом Drache. 


--------------------
Теперь при чем :P
PM   Вверх
Gold Dragon
Дата 24.7.2006, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 2
Всего: 71



Ignat, поясни 


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Ignat
Дата 24.7.2006, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Gold Dragon, твой вариант с подзапросом. Первоначально будут выбраны все записи из т2, при этом они попадут по временную таблицу. Далее будет сравнение каждой записи из т2 с каждой записью из временной таблицы.

В случае с LEFT JOIN нет подзапроса, поля для связывания (как правило) проиндексированы, следовательно будут выбраны только те записи, для которых было сопоставление с ключом NULL. Это значит, что производительность запроса с LEFT JOIN выше. 


--------------------
Теперь при чем :P
PM   Вверх
Gold Dragon
Дата 24.7.2006, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 2
Всего: 71



Ignat, хочешь сказать, что все подзапросы выполняются намного медленнее? И как сильно загружают?
 


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Ignat
Дата 24.7.2006, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Цитата(Gold Dragon @  24.7.2006,  10:19 Найти цитируемый пост)
Ignat, хочешь сказать, что все подзапросы выполняются намного медленнее? И как сильно загружают?
  

Не обязательно на много, но то что медленнее - факт. Ведь это по сути два запроса. Хотя при неправлиьном соединении таблиц можно получить результат плачевнее подзапроса. Загрузка также зависит от объема. 


--------------------
Теперь при чем :P
PM   Вверх
Gold Dragon
Дата 24.7.2006, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 2
Всего: 71



Ignat, по логике вещей ты может и прав... но если запрос очень сложный, то его намного легче читать, особенно когда уже не помнишь что хотел  smile  


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.