両方ともORDER BYを含む2つのクエリを結合しようとしています。 私が発見したように、UNIONの一部であるクエリでは注文できません。 私はこのクエリを他にどのように行うのか分かりません。私がしようとしていることを説明しましょう。ORDER BYを含むMySQL UNION 2のクエリ
- 私は40個の最新のプロファイルを選択しようとすると、そのリストから午前私はその後にすることを労働組合にしたい20のランダムなセットを選択:
- するプロファイルがに該当しない40個のランダムなプロファイルを選択します元の40個の最新のプロファイルが最初のセットで照会されました
- 60個のレコード全体をランダムに注文します。これは、以下のアブヘイのヘルプ(感謝アブヘイ)に基づいたソリューションです:
私は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 * FROM ( SELECT profileId FROM profile profile4 WHERE profile4.profilePublishDate <= Now() ORDER BY profile4.profilePublishDate DESC LIMIT 0,40 ) AS temp2 ) ORDER BY RAND() LIMIT 0,40 ) ) TEMP ORDER BY RAND();
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) as profile3 ORDER BY RAND()
UPDATEランド()関数を使用しての効率波及効果を認識してい
Thanks - あなたのソリューションは私の問題を解決しましたが、新しいエラーが発生しました(このバージョンのMySQLでは 'LIMIT&IN/ALL/ANY/SOME subquery ')、私は別のselectで解決して、上記の完全な質問を私の元の投稿に投稿しました。これを解決するお手伝いをありがとう。 – Cheeky
@Cheeky:はい、これはMySQLの問題点を解決する方法です:) –