UNION内のORDER BY RAND()にはいくつか問題があります。 UNION内の別個のクエリ内でランダムに注文するようには見えません。ORDER BY RAND()はUNION内では機能しません
サブクエリ1>サブクエリ2>サブクエリ3である必要があるため、クエリ全体を一度に並べることなく、サブクエリを注文したいだけです。
私はNEWID()やUUID()のようなMySQLのいくつかのランダム関数を試しましたが、どちらもうまくいかないようです。
私は結果を得るためにWordPressを使用しています。
SELECT *
FROM (
(SELECT act.wordpress_id,
act.title,
act.main_image,
loc.id,
"activities" AS type,
loc.town,
loc.village
FROM tha_wc_activity act
INNER JOIN tha_wc_location loc
ON act.location_id = loc.id
WHERE
act.active = 1 AND
act.visible_in_activities_overview = 1 AND
loc.id = 1
ORDER BY RAND()
)
UNION
(SELECT act.wordpress_id,
act.title,
act.main_image,
loc.id,
"activities" AS type,
loc.town,
loc.village
FROM tha_wc_activity act
INNER JOIN tha_wc_location loc
ON act.location_id = loc.id
WHERE
act.active = 1 AND
act.visible_in_activities_overview = 1 AND
loc.village = "villageName"
ORDER BY RAND()
)
UNION
(SELECT act.wordpress_id,
act.title,
act.main_image,
loc.id,
"activities" AS type,
loc.town,
loc.village
FROM tha_wc_activity act
INNER JOIN tha_wc_location loc
ON act.location_id = loc.id
WHERE
act.active = 1 AND
act.visible_in_activities_overview = 1 AND
loc.town = "townName"
ORDER BY RAND()
)
) AS act
WHERE act.wordpress_id != 1
LIMIT 0, 15)
UPDATE:ゴードン・リノフに おかげで、私は非常にわからないんだけど、それが注文した結果に
私は各サブクエリを別々に注文し、それらの3つのクエリをまとめて1つのクエリとして返す必要があります。したがって、RANDによる順序は正しくないです。なぜなら、別の順序は無視され、クエリ全体に制限が欲しいからです。 – Rens
@ renzz17。 。 。あなたは 'すべての組合 'をしたいかもしれません。 –