2017-09-01 11 views
0

ID ASC順に行をフェッチしようとしていますが、その結果を後でランダム化したいとします。基本的に、最初の15行をフェッチしたい場合は、ランダム化されたものが最初の15行になるようにします。MySQL順序付き行を選択し、結果をランダム化します。

基本的に、私は最初の15クライアントをロードするフレームと、15以上のクライアントをロードするためのボタン "load more"ボタンを持っています。私は単に同じ15人のクライアントが注文IDで出てくるようにしたいが、彼らのポジションをランダムにしたい。 MySQLの経由でこれを行う方法はありますか私は本当に引き出す必要はありません

SELECT wp_posts.ID, wp_posts.post_title, 
    wp_postmeta.meta_value, 
    axess_clients.client_nom, 
    axess_clients.site 
FROM wp_posts 
LEFT JOIN axess_clients ON axess_clients.client_id = wp_posts.ID 
LEFT JOIN wp_postmeta ON wp_postmeta.post_id = wp_posts.ID 
WHERE wp_posts.post_type='clients' AND wp_posts.post_status='publish' 
AND wp_postmeta.meta_key='_thumbnail_id' 
ORDER BY wp_posts.ID ASC, RAND() LIMIT 15 OFFSET ".$_POST['data'] 

この

は、私がこれまで持っていますが、最後にRAND()はどんな影響を与えていないされているものですこれはPHPですか?

答えて

1

ORDER BYに複数の式がある場合、最初の式が等しいグループ内で2番目の式を使用して並べ替えます。最初の式ですでに順序付けられている行を並べ替えることはできません。

何かを並べ替えるには、最初の並べ替えをサブクエリに配置する必要があります。

SELECT * 
FROM (
    SELECT wp_posts.ID, wp_posts.post_title, 
     wp_postmeta.meta_value, 
     axess_clients.client_nom, 
     axess_clients.site 
    FROM wp_posts 
    LEFT JOIN axess_clients ON axess_clients.client_id = wp_posts.ID 
    LEFT JOIN wp_postmeta ON wp_postmeta.post_id = wp_posts.ID 
    WHERE wp_posts.post_type='clients' AND wp_posts.post_status='publish' 
    AND wp_postmeta.meta_key='_thumbnail_id' 
    ORDER BY wp_posts.ID ASC 
    LIMIT 15 OFFSET " . $_POST['data']) AS x 
ORDER BY RAND() 
関連する問題