over - php mysql count rows




MySQL-Utilisation de COUNT(*) dans la clause WHERE (6)

J'essaie d'accomplir ce qui suit dans MySQL (voir pseudo code)

SELECT DISTINCT gid
FROM `gd`
WHERE COUNT(*) > 10
ORDER BY lastupdated DESC

Y at-il un moyen de le faire sans utiliser un (SELECT ...) dans la clause WHERE, car cela semblerait être un gaspillage de ressources.


- recherche de stations météorologiques avec des enregistrements demi-horaires manquants

SELECT stationid
FROM weather_data 
WHERE  `Timestamp` LIKE '2011-11-15 %'  AND 
stationid IN (SELECT `ID` FROM `weather_stations`)
GROUP BY stationid 
HAVING COUNT(*) != 48;

- variation de yapiskan avec un où .. dans .. sélectionnez


Il ne peut pas y avoir de fonctions agrégées (Ex. COUNT, MAX, etc.) dans la clause A WHERE. Par conséquent, nous utilisons la clause HAVING à la place. Par conséquent, toute la requête serait similaire à ceci:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;

Je pense que vous ne pouvez pas ajouter count() avec where . Maintenant, voyez pourquoi ....

where n'est pas le même que d' having , having signifie que vous travaillez ou de traiter de groupe et même travail de comte, il s'agit également de l'ensemble du groupe,

maintenant comment ça marche comme groupe entier

créer une table et entrer des identifiants, puis utiliser:

select count(*) from table_name

vous trouverez les valeurs totales signifie qu'il indique un groupe! Alors, where est-ce que ajouté avec count() ;


Version académique sans avoir de clause:

select *
from (
   select gid, count(*) as tmpcount from gd group by gid
) as tmp
where tmpcount > 10;

essayer

SELECT DISTINCT gid
FROM `gd`
group by gid
having count(*) > 10
ORDER BY max(lastupdated) DESC

SELECT COUNT(*)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC;

EDIT (si vous voulez juste les gids):

SELECT MIN(gid)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC




mysql