sql >> データベース >  >> RDS >> Mysql

MySQLは、合計がしきい値を超えるレコードを選択します

    これは、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」がありましたが、>これが非常にケース固有である理由がわかりません:)




    1. MySQLエラー1046(3D000):更新クエリでデータベースが選択されていません

    2. データ型nvarcharをrealに変換中にエラーが発生しました。

    3. MySQLで正規表現を置き換える方法は?

    4. ClusterControl-高度なバックアップ管理-mariabackupパートI