Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2014, 13:12   #1
Ishtvan
Новичок
Джуниор
 
Регистрация: 08.12.2009
Сообщений: 1
По умолчанию Запрос с выборкой по одинаковым значением нескольких полей

Оракл 9
Всем привет. Очень прошу помочь в написании запроса.

Таблица 1

ID State City
1 LA LosA
2 NY NewY
3 NY NewY

Как мне выбрать именно те, у которых одинаковые State и City, но разные ID, то есть в нашем случае
2 NY NewY
3 NY NewY

Спасибо!
Ishtvan вне форума Ответить с цитированием
Старый 09.01.2014, 13:52   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Самый простой, но не факт, что самый эффективный способ
Код:
SELECT T1.*
  FROM MyTable T1
  WHERE EXISTS(SELECT * FROM MyTable T2 WHERE T2.State=T1.State AND T2.City=T1.City AND T2.ID<>T1.ID)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.01.2014, 11:28   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Чрез джойн почти тоже самое:
Код:
SELECT T1.* FROM MyTable T1
JOIN MyTable T2 ON T2.State=T1.State AND T2.City=T1.City AND T2.ID<>T1.ID
phomm вне форума Ответить с цитированием
Старый 10.01.2014, 12:12   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Чрез джойн почти тоже самое
Не, так не прокатит. Допустим 4 совпадающих записи. Каждая из них вывалится по 3 раза в результирующий набор данных. Вот если туда еще DISTINCT засунуть тогда да. Но по эффективности уступает варианту с EXISTS
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 10.01.2014 в 12:14.
Аватар вне форума Ответить с цитированием
Старый 10.01.2014, 12:40   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Ну да, думал дистинкт добавить, почему-то решил что на том наборе что автор дал будет нормально и без него, и в итоге не стал. Надо добавить конечно.
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение текстовых полей значением из textBox'a С++ heyDude Помощь студентам 0 22.05.2012 21:58
проверить есть ли в массиве числа с одинаковым значением? yardie Общие вопросы C/C++ 1 12.10.2010 13:17
Запрос с выборкой NIKOLASCS SQL, базы данных 11 02.04.2010 07:20
Объеденение полей запроса в для отображения нескольких полей в одном списке mrCreator Microsoft Office Access 3 08.08.2009 00:53
Проблемы с выборкой данных из нескольких таблиц Arkuz БД в Delphi 1 29.07.2009 15:46