sql >> Database teknologi >  >> RDS >> Mysql

MySQL-forespørgsel - får manglende poster ved brug af gruppe-by

SQL er god til at arbejde med sæt af dataværdier i databasen, men ikke så god til sæt af dataværdier, der er ikke i databasen.

Den bedste løsning er at beholde en lille tabel for de værdier, du skal bruge:

CREATE TABLE ScoreValues (score int);
INSERT INTO ScoreValues (score) 
  VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);

I betragtning af din kommentar om, at du definerer de maksimale karakterer for en test i en anden tabel, kan du slutte dig til den tabel på følgende måde, så længe ScoreValues er sikker på at have værdier, der er mindst lige så høje eller højere end den største tests maks. point:

SELECT v.score, COUNT(tr.score) AS 'NumStudents'
FROM ScoreValues v 
  JOIN Tests t ON (v.score <= t.maxmarks)
  LEFT OUTER JOIN TestResults tr ON (v.score = tr.score AND t.testid = tr.testid)
WHERE t.testid = 'mytestid'
GROUP BY v.score;


  1. MySQL slutter mange til mange enkelt række

  2. Oplev typer på PL/SQL-pakkeniveau ved hjælp af Oracle-ordbogsvisninger

  3. Hvordan taler Access med ODBC-datakilder? Del 6

  4. Vælg første post, hvis ingen matcher