sql >> Database >  >> RDS >> Mysql

MySQL selecteert records met een som groter dan de drempel

Dit lijkt te passen bij een UNION-resultatenset. U moet dus 2 zoekopdrachten krijgen (één voor elk "criterium") en hun resultaat samenvoegen met behulp van union.

De eerste vraag zou worden:

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 heb je de query nodig die selecteert of de maat te groot is:

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;

Vervolgens wil je ze combineren in een enkele zoekopdracht. Aangezien beide dezelfde velden hebben, kunt u het resultaat eenvoudig "verenigen"

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:je had "ON f1.id>=f2.id" als lidmaatschapscriteria, niet zeker waarom de> dat heel specifiek zou zijn :)




  1. Extraheer de maand van een datum in PostgreSQL

  2. Is er een ANSI SQL-alternatief voor het sleutelwoord MYSQL LIMIT?

  3. SQL Server voegt auto-increment primaire sleutel toe aan bestaande tabel

  4. Emoji-tekens opslaan in MySQL-database