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

ORDERBYを含むMySQLUNION2クエリ

    これがあなたの解決策です:

    SELECT *
    FROM
    (
        **(**
            SELECT profileId
            FROM 
            (
                SELECT profileId
                FROM profile profile2
                WHERE profile2.profilePublishDate <= Now()
                ORDER BY profile2.profilePublishDate DESC
                LIMIT 0,40
            ) AS profile1
            ORDER BY RAND()
            LIMIT 0,20
        **)**
        UNION
        (
            SELECT profileId
            FROM profile profile4
            WHERE profileId NOT IN (
                SELECT profileId
                FROM profile profile4
                WHERE profile4.profilePublishDate <= Now()
                ORDER BY profile4.profilePublishDate DESC
                LIMIT 0,40
                )
            ORDER BY RAND()    
            LIMIT 0,40
        )
    ) TEMP
    ORDER BY RAND();
    

    私が行った変更は次のとおりです。

    1. UNIONの一部である各クエリは、角かっこで囲む必要があります(最初のクエリでは太字で示され、2番目のクエリはすでに囲まれています)
    2. エイリアスprofile3を削除しました 2番目のクエリの場合
    3. 最後のORDER BY RAND()の場合 、派生テーブルにUNION結果セットを作成する必要があります。 TEMPを指定しました エイリアスとして

    上記のクエリはテストしていませんが、機能することを願っています。調査結果を教えてください。



    1. それぞれが等しい1つの列に基づいて、別のテーブルのデータで1つのテーブルの行を更新します

    2. php password_verify()ハッシュとパスが一致しません

    3. PHP Javascript?ユーザーがページまたはブラウザを閉じたときに何かをする

    4. PostgreSQLでのデータウェアハウスの実行