Из таблицы CD возвращаются артисты с более чем 1 CD - PullRequest
0 голосов
/ 16 ноября 2011

Итак, структура таблицы такая:

          CD id        |          Artist id

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

Я используюMysql так, что является лучшим SQL-запросом, чтобы сделать это?

Ответы [ 2 ]

3 голосов
/ 16 ноября 2011

Сначала вы группируете свои записи по artist_id, затем вы можете использовать предложение HAVING, которое позволяет фильтровать данные на основе совокупности, например COUNT или SUM

SELECT Artist_id, COUNT(1)
FROM yourTable
GROUP BY Artist_id
HAVING COUNT(1) > 1

Краткое объяснение: Этот запрос выберет исполнителя, а также счетчик количества раз, которое они находятся в таблице (Количество дисков в данном случае)

Это COUNT агрегируется на *Предложение 1010 *, поэтому он будет считать каждую группу Artist_Id

Предложение HAVING тогда говорит, что мы хотим возвращать только те записи, которые имеют COUNT(1) > 1, который будет указывать количество CD для этой таблицы.

0 голосов
/ 16 ноября 2011
SELECT Artist_id, COUNT(0) as `cdCount`
FROM tableName
GROUP BY Artist_id
HAVING cdCount > 1;

Это должно дать вам артистов с более чем 1 CD (Адам уже объяснил)

Чтобы получить диск с максимальным количеством компакт-дисков, есть 2 способа:

(a) Вы заказываете по количеству, а затем выбираете первый

SELECT Artist_id, COUNT(0) as cdCount
FROM tableName
GROUP BY Artist_id
HAVING cdCount > 1
ORDER BY cdCount
LIMIT 0, 1;

Однако, это не даст вам всех артистов, если у вас более 1 артистов с максимальным числом компакт-дисков

В этом случае используйте

(б)

SELECT * FROM 
(SELECT Artist_id, COUNT(0) as cdCount
FROM tableName
GROUP BY Artist_id) t
HAVING cdCount = MAX(t.cdCount);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...