Хелп с MySQL запросом

12
Asar
На сайте с 23.08.2004
Offline
334
1192

Задачка: нужно вычислить строки в таблице, значение определенного поля в которых повторяется более одного раза. Тупо:

Делаю Distinct, потом для каждого результата делаю запрос по количеству вхождений, вывожу в случае, если количество больше одного. Работает, но ужасно тормозит (таблица большая). Есть менее тупые и более быстрые варианты?

Спасибо.

[Удален]
#1

Я задачу не особо понял, покажите запрос который у вас сейчас. а так на заметку - должно работать быстрее при индексе по полю группировки

select * from bigtable where count(`fieldname`) >= 2 group by `fieldname`

Asar:
Задачка: нужно вычислить строки в таблице, значение определенного поля в которых повторяется более одного раза.

запрос пожалуйста, словами вам не удалось 100% объяснить что вы хотите)

[Удален]
#2

Тоже не понял, нужны строки таблицы с одинаковыми определенными полями?

Asar
На сайте с 23.08.2004
Offline
334
#3

Значения поля Caption:

abc

ab

vs

abc

vs

rpp

Мне нужно получить: abc, abc, vs, vs (т.е. повторяющиеся). А ab и rpp получать не нужно.

Причем мне нужны обе строки abc, а не только одна для каждого повтора.

skAmZ
На сайте с 04.09.2009
Offline
122
#4


select field from table group by field having count(*)>1

Вроде так....

[Удален]
#5
select * from bigtable `a` inner join(select Caption from bigtable where count(`Caption`) >= 2 group by `Caption`) `b` using (Caption)

такой запрос как быстро работает? не забудьте индекс по полю Caption поставить

seodude добавил 03.02.2011 в 15:45

skAmZ:
Вроде так....

group убьет птовторяющиеся строки :-(

skAmZ
На сайте с 04.09.2009
Offline
122
#6
skAmZ:
group убьет птовторяющиеся строки :-(

Тогда только Ваш варинат....

Asar
На сайте с 23.08.2004
Offline
334
#7

Грит Invalid use of group function. Брр...

[Удален]
#8

Asar, покажите запрос который у вас получился из моего, а мы покажем что не так :-)

Asar
На сайте с 23.08.2004
Offline
334
#9

seodude, так в том и дело, что я там вообще ничего не менял, кроме названия таблицы. Остально скопипастил тупо.

select * from Sp `a` inner join(select Caption from Sp where count(`Caption`) >= 2 group by `Caption`) `b` using (Caption)
[Удален]
#10

Asar, можете дать "show create table Sp" ? чтобы локально глянуть чо чудит :-)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий