これがあなたの解決策です:
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();
私が行った変更は次のとおりです。
- UNIONの一部である各クエリは、角かっこで囲む必要があります(最初のクエリでは太字で示され、2番目のクエリはすでに囲まれています)
- エイリアス
profile3
を削除しました 2番目のクエリの場合 - 最後の
ORDER BY RAND()
の場合 、派生テーブルにUNION結果セットを作成する必要があります。TEMP
を指定しました エイリアスとして
上記のクエリはテストしていませんが、機能することを願っています。調査結果を教えてください。