2017-06-07 1 views
-1

J'ai la requête ci-dessous qui retourne le nom d'une classe qui est inférieure à 20 et s'il n'y a pas de classe inférieure à 20, il en ajoute une nouvelle. le problème est que lorsque je supprime un utilisateur de la classe qui était pleine que cette requête renvoie deux lignes. Je n'ai besoin que de la première ligne qui revient.Sélectionnez la première ligne après le groupe

SELECT exam_venue AS venue 
    FROM application 
WHERE class_level = 1 
    AND rownumber = 1 
GROUP 
    BY venue 
HAVING COUNT(id) < 20 
+0

Ceci n'ajoutait rien!?! Voir: [Pourquoi devrais-je fournir un MCVE pour ce qui me semble être une requête SQL très simple?] (Https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve- pour-ce-qui-me-semble-à-être-un-très-simple-sql-query) – Strawberry

Répondre

0

SELECT exam_venue ACCUEILLERA de l'application OÙ class_level = 1 ET rownumber = 1 GROUP BY lieu HAVING COUNT (id) < 20 LIMITE 0,1

+0

Notez que LIMIT sans ORDER BY est assez insignifiant. – Strawberry

+0

Je n'ai pas la colonne rownumber donc je reçois l'erreur unknownown rownumber –

-1

Un moyen facile peut être la suivante :::

SELECT TOP 1 exam_venue AS venue, COUNT(id) 
FROM application 
WHERE class_level = 1 
GROUP BY venue 
HAVING COUNT(id) < 20 
+0

il n'y a pas de colonne numéro de ligne –

+0

selon votre extrait de code, je pensais que "rownumber" était un nom de champ. si ce n'est pas le cas, supprimez-le de "WHERE" Clause @MuharremSmakiqi – PrinceKayastha

+0

même si je supprime TOP 1 n'est pas reconnu –