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

MySQL-valgte poster med sum større end tærskelværdien

Dette ser ud til at passe til et UNION-resultatsæt. Så du skal få 2 forespørgsler (en for hvert "kriterie") og slutte sig til deres resultat ved hjælp af union.

Første forespørgsel ville blive:

SELECT f1.user_id, f1.id AS file_id, SUM(f1.fileSize) AS totalSum
FROM files AS f1 
WHERE f1.user_id = 1
GROUP BY f1.id 
HAVING totalSum <= 350000;

Nu skal du bruge forespørgslen, der vælger, om størrelsen er for stor:

SELECT f1.user_id, f1.id AS file_id, MAX(f1.fileSize) AS max
FROM files AS f1 
WHERE f1.user_id = 1
GROUP BY f1.id 
HAVING max >= 350000;

Dernæst vil du kombinere dem i en enkelt forespørgsel. Da begge har de samme felter kan du blot "forening" resultatet

SELECT f1.user_id, f1.id AS file_id, SUM(f1.fileSize) AS totalSum
FROM files AS f1 
WHERE f1.user_id = 1
GROUP BY f1.id 
HAVING totalSum <= 350000
UNION
SELECT f1.user_id, f1.id AS file_id, MAX(f1.fileSize) AS max
FROM files AS f1 
WHERE f1.user_id = 1
GROUP BY f1.id 
HAVING max >= 350000;

PS:Du havde "ON f1.id>=f2.id" som joinkriterier, ved ikke hvorfor> det ville være meget case-specifikt :)




  1. SQLite LIKE

  2. Fjern dublerede rækker i en tabel uden primærnøgle

  3. Sådan forbinder du to kolonner til den samme tabel

  4. Hvornår skal SQL_NO_CACHE bruges