MySQL запрос на возврат только дублированных записей с количеством - PullRequest
1 голос
/ 03 февраля 2009

У меня есть устаревшая таблица MySQL с именем lnk_lists_addresses со столбцами list_id и address_id. Я хотел бы написать запрос, который сообщает обо всех случаях, когда одна и та же комбинация list_id - address_id встречается в таблице более одного раза с количеством.

Я пробовал это ...

SELECT count(*), list_id, address_id
FROM lnk_lists_addresses
GROUP BY list_id, address_id
ORDER BY count(*) DESC
LIMIT 20

Это работает, вроде как, потому что есть менее 20 дубликатов. Но как мне вернуть только число больше 1?

Я пытался добавить "WHERE count(*) > 1" до и после GROUP BY, но получил ошибки, говорящие о том, что утверждение недопустимо.

Ответы [ 3 ]

8 голосов
/ 03 февраля 2009
SELECT count(*), list_id, address_id
FROM lnk_lists_addresses
GROUP BY list_id, address_id
HAVING count(*)>1
ORDER BY count(*) DESC

Чтобы объединить мои и Todd.Run ответы для более "полного" ответа. Вы хотите использовать предложение HAVING:

http://dev.mysql.com/doc/refman/5.1/en/select.html

2 голосов
/ 03 февраля 2009

Вы хотите использовать предложение "HAVING". Его использование объяснено в руководстве MySQL.

http://dev.mysql.com/doc/refman/5.1/en/select.html

1 голос
/ 03 февраля 2009
SELECT count(*) AS total, list_id, address_id
FROM lnk_lists_addresses
WHERE total > 1
GROUP BY list_id, address_id
ORDER BY total DESC
LIMIT 20

Если вы назовете поле COUNT (), вы можете использовать его позже в выражении.

РЕДАКТИРОВАТЬ: забыл о HAVING (> _ <) </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...