Zdá se, že je to vhodné pro sadu výsledků UNION. Musíte tedy získat 2 dotazy (jeden pro každé „kritéria“) a spojit jejich výsledek pomocí sjednocení.
První dotaz by byl:
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;
Nyní potřebujete dotaz, který vybere, zda je velikost příliš velká:
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;
Dále je chcete zkombinovat do jednoho dotazu. Protože obě mají stejná pole, můžete výsledek jednoduše „sjednotit“
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:Jako kritérium spojení jste měli "ON f1.id>=f2.id", nejste si jisti, proč by> to bylo velmi specifické pro případ :)