Упорядочивание результатов по количеству возвращаемых дубликатов - PullRequest
0 голосов
/ 26 сентября 2018

У меня следующий запрос:

select titles.* from titles left join quotes on quotes.title_id = titles.id where titles.type = 4 order by titles.slug DESC

Возвращает несколько повторяющихся записей заголовков.Я хотел бы посчитать, сколько дубликатов title.slugs, и упорядочить их по порядку.

Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Идея этого состояла в том, чтобы вытащить случаи, когда использовался внешний ключ.Левое соединение гарантирует, что внешний ключ не является нулевым.Остальное делается с помощью COUNT, GROUP BY и HAVING,

Примерно так:

select titles.*, count(*) as n from titles left join quotes on quotes.title_id = titles.id where titles.type = 4 GROUP BY slug HAVING n > 1 order by n DESC

0 голосов
/ 26 сентября 2018

Используйте комбинацию group by с order by aggregate:

SELECT titles.*
FROM titles 
LEFT JOIN quotes 
    ON quotes.title_id = titles.id 
WHERE titles.type = 4 
GROUP BY titles.slug
ORDER BY COUNT(titles.slug) DESC

, если вам нужно использовать количество дубликатов, добавьте что-то подобное в ваш оператор select:

COUNT(titles.slug) as duplicate_title_count

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

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