Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysql dont la valeur a un nombre maximum

Vérifiez ceci... afin d'éviter de référencer le même groupe de résultats, j'ai créé une table... vous devez la supprimer après avoir effectué le traitement, ou remplacer maxcounttemp par (SELECT what, loc, count(loc) howmany FROM maxcount GROUP BY what, loc) as tblX J'ai essayé de le rendre TEMPORAIRE, mais vous ne pouvez pas l'utiliser dans une sous-requête si la table externe est la même.

CREATE TABLE `maxcounttemp` (
  `what` varchar(1) DEFAULT NULL,
  `loc` varchar(1) DEFAULT NULL,
  `howmany` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO maxcounttemp (
  SELECT what, loc, count(loc) howmany FROM maxcount GROUP BY what, loc
);

SELECT mct.what, mct.loc, mct.howmany
FROM maxcounttemp mct 
WHERE (mct.what, mct.howmany) IN (
  SELECT mct2.what, MAX(mct2.howmany) 
  FROM maxcounttemp mct2 
  WHERE mct2.what = mct.what 
  GROUP BY mct2.what
) GROUP BY (mct.what);

j'espère que cela vous aidera... gardez à l'esprit que bx ou by sont également possibles sur cette requête...