ВЫБЕРИТЕ id, ГДЕ СЧЕТ (*)> X? Получить записи от любого пользователя, который имеет более X записей в таблице? - PullRequest
5 голосов
/ 01 февраля 2011

Очевидно, что запрос в заголовке не работает, но он может наивно показать, что я хотел бы сделать. У меня есть таблица, которая содержит несколько пользователей, идентифицированных столбцом идентификатора. Этот идентификатор не является уникальным в базе данных. Он помечает пользователя, который может иметь несколько записей в моей таблице.

Как я могу показать всю запись всех пользователей (идентифицированных по идентификатору), которые имеют более 10 записей в моей таблице?

Ответы [ 4 ]

6 голосов
/ 01 февраля 2011

Используйте с вместо , где :

SELECT id
  FROM (
        SELECT id, COUNT(*) as cnt
        FROM sowewhere 
        GROUP BY id
        HAVING cnt > 1
   ) temp_table
2 голосов
/ 01 февраля 2011
SELECT * FROM user 
WHERE id IN (SELECT id FROM user GROUP BY id HAVING COUNT(*) > 10)
1 голос
/ 01 февраля 2011
SELECT id, COUNT(*) FROM Table GROUP BY id HAVING COUNT(*) > 10
0 голосов
/ 01 февраля 2011

вот как:

 CREATE TABLE mytable_clean AS
 SELECT * FROM mytable WHERE id IN(
 SELECT id FROM
 (SELECT id,COUNT(*) AS appearance 
 FROM mytable
 GROUP BY id) AS id_count
 WHERE id_count.appearance > 9 )

Это работает. Это не медленно, но выглядит немного неуклюже для меня. Лучшие решения приветствуются:)

...