Wydaje się to pasować do wyników UNION. Musisz więc uzyskać 2 zapytania (po jednym dla każdego „kryterium”) i połączyć ich wynik za pomocą unii.
Pierwsze zapytanie to:
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;
Teraz potrzebujesz zapytania, które określa, czy rozmiar jest za duży:
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;
Następnie chcesz połączyć je w jedno zapytanie. Ponieważ oba mają te same pola, możesz po prostu „połączyć” wynik
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:Miałeś "ON f1.id>=f2.id" jako kryterium przyłączenia, nie wiesz, dlaczego> to byłoby bardzo specyficzne dla przypadku :)