これは、UNIONの結果セットに適合しているようです。したがって、2つのクエリ(「基準」ごとに1つ)を取得し、ユニオンを使用してそれらの結果を結合する必要があります。
最初のクエリは次のようになります:
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;
ここで、サイズが大きすぎるかどうかを選択するクエリが必要です:
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;
次に、それらを1つのクエリに結合します。どちらも同じフィールドを持っているので、結果を簡単に「結合」できます
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:結合基準として「ONf1.id> =f2.id」がありましたが、>これが非常にケース固有である理由がわかりません:)