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 :)