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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2012, 08:50   #1
warwarwar
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 10
По умолчанию выбрать все повторяющиеся записи

Доброго времени суток!

есть таблица base_items (mysql)

ID game_id
1 x
2 x
3 y
4 z
5 x

мне нужно выбрать ВСЕ строки у которых game_id одинаковый. пишу -

select * from base_items group by game_id having count(game_id) >1

выводится только 1 строка

ID game_id
5 x

мне нужно чтобы вывелось

ID game_id
1 x
2 x
5 x

как это правильно сформулировать?

спасибо заранее за ответ

Последний раз редактировалось warwarwar; 27.11.2012 в 08:54.
warwarwar вне форума Ответить с цитированием
Старый 27.11.2012, 09:09   #2
Stormik
 
Регистрация: 27.11.2012
Сообщений: 8
По умолчанию

Глупость написал

Последний раз редактировалось Stormik; 27.11.2012 в 09:14. Причина: Глупость написал
Stormik вне форума Ответить с цитированием
Старый 27.11.2012, 09:11   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
select * from base_items group by game_id having count(game_id) >1
Это вообще компилируется?
ИМХО вот так должно быть
Код:
 select a.* 
 from base_items a
 where a.game_id in (select b.game_id from base_items b  group by game_id having count(b.game_id)>1)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.11.2012, 09:21   #4
warwarwar
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 10
По умолчанию

mysql workbench вылетает когда я пишу

select a.*
from base_items a
where a.game_id in (select b.game_id from base_items b group by game_id having count(b.game_id)>1)

Последний раз редактировалось warwarwar; 27.11.2012 в 09:25.
warwarwar вне форума Ответить с цитированием
Старый 27.11.2012, 09:37   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Может потому, что не group by b.game_id

Можно попробовать такой вариант
Код:
select a.*
  from base_items a,
    (select b.game_id from base_items b  group by b.game_id having count(b.game_id)>1) AS C
  WHERE a.game_id=c.game_id
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.11.2012, 09:58   #6
warwarwar
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 10
По умолчанию

призадумалась машина, за 10 минут так ничего и не вывелось..

тот запрос который я написал в первом посте обрабатывается буквально несколько секунд(таблица 150000 строк) и выводит то что мне нужно но только по одному ID из группы одинаковых game_id.

может вы меня не так поняли..

мне просто нужно выбрать из таблицы все ID у которых в колонке game_id есть одинаковые значения.
но что бы при этом отображалось не по одному ID а сразу все ID где встречается одно и тоже значение в колонке game_id

Последний раз редактировалось warwarwar; 27.11.2012 в 10:06.
warwarwar вне форума Ответить с цитированием
Старый 27.11.2012, 10:16   #7
Stormik
 
Регистрация: 27.11.2012
Сообщений: 8
По умолчанию

Если таких строк не много, я бы разбил на 2 этапа: Сначала COUNT() GROUP,
А затем в цикле сформировать запрос, где `game_id` = группировкам больше 1
Stormik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Повторяющиеся записи, ClientDataSet Регинка-малинка БД в Delphi 8 20.11.2010 00:28
Повторяющиеся записи в DBLookupComboBox sl963 БД в Delphi 4 30.05.2010 07:40
повторяющиеся записи hinku БД в Delphi 3 18.08.2009 17:25
Повторяющиеся записи DBGrid Crookers БД в Delphi 2 21.05.2008 13:26
Выбрать повторяющиеся записи Andrei SQL, базы данных 2 13.09.2007 14:28