Помогите составить mysql-запрос

A5
На сайте с 02.06.2009
Offline
218
317

Есть таблица:

id;key;value;..

1;1;2

2;1;2

3;3;4

4;1;5

5;5;5

необходимо сделать выборку по вхождению ключа 1 и 5 как минимум в 2-х строках таблицы

т.е. например делаем запрос:

SELECT value,count(value) as cnt FROM table where key in (1,5) group by value having cnt>1

в результате получаем 2 строки:

value;cnt

2;2

5;2

но первое значение неверно для исходной задачи, т.к. ключа 5 не встречается в таблице для значения 2, однако оно подходит под условия запроса

Как без вложенных запросов сделать, чтобы запрос учитывал уникальные значения и отдавал при текущем запросе только второе совпадение?

С вложенными работает:

select value,count(value) from (SELECT * FROM db where key in (1,5) group by value,key) group by value having count(value)>1 limit 1000

но довольно существенно замедляется

[umka]
На сайте с 25.05.2008
Offline
456
#1

SELECT t.key, t.cnt FROM (SELECT key, COUNT(*) FROM db GROUP BY key) t WHERE t.cnt>1

А тормозит HAVING

Лог в помощь!

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