J'ai une table qui a une colonne appelée article_title
. Disons que le nom de la table est articles
. Je dois trouver les enregistrements où le article_title
les données sont les mêmes sur plusieurs enregistrements.
Voici ce que j'ai:
select a.*
from articles a
where a.article_title = (select article_title
from articles
where article_title = a.article_title
AND a.id <> articles.id)
AVOIR est un excellent filtre global. ( http://dev.mysql.com/doc/refman/5.6/en/group-by-extensions.html ) Par exemple, sélectionnez les titres_article avec plus que sur occurrence:
SELECT count(*), article_title
FROM articles
GROUP BY article_title
HAVING COUNT(*) > 1;
L'ajout de colonnes aux clauses SELECT et GROUP BY vous permet de localiser les doublons en fonction d'une clé composite de plusieurs colonnes.
Votre problème peut être résolu avec cette requête:
SELECT *
FROM article
WHERE article_title IN (SELECT *
FROM (SELECT article_title
FROM article
GROUP BY article_title
HAVING COUNT(article_title) > 1)
AS a);
avoir une table qui a une colonne appelée article_title. Disons que le nom de la table est des articles. J'ai besoin de trouver les enregistrements où les données article_title sont les mêmes sur plusieurs enregistrements.
Il me semble que vous devez également avoir l'ID, car vous voulez trouver des enregistrements basés sur article_title
parce que vous avez des doublons
Basic MIN/MAX avec GROUP BY (vous manquerez les identifiants lorsque plus de 2 doublons)
SELECT
MIN(id) -- for FIFO id's (first id by duplicate)
, MAX(id) -- for LIFO id's (last id by duplicate)
, article_title
, COUNT(*)
FROM
articles
WHERE -- Maybe to filter out '' or IS NOT NULL
article_title != '' AND article_title IS NOT NULL
GROUP BY
article_title ASC
HAVING
COUNT(*) >= 2
;
Ou revenons à la dénormalisation pour générer un CSV pour LIFO id's (anciens identifiants par doublons) mais vous connaissez tous les identifiants ici ..
SELECT
GROUP_CONCAT(id ORDER BY ASC SEPARATOR ',') -- change to DESC if want the last record first
, article_title
, COUNT(*)
FROM
articles
GROUP BY
article_title ASC
HAVING
COUNT(*) >= 2
;