MySQL选择有序行,然后随机化结果

MySQL选择有序行,然后随机化结果,mysql,random,sql-order-by,Mysql,Random,Sql Order By,我正在尝试获取按ID ASC排序的行,但我还希望随后将该结果随机化。因此,基本上,如果我想获取前15行,我希望它们随机出现,但作为前15行 基本上,我有一个框架来加载前15个客户端,还有一个按钮“加载更多”来加载15个客户端。我只是想让同样的15个客户按订单ID出来,但他们的位置是随机的 到目前为止,我已经做到了这一点,但最后的RAND()没有任何影响: SELECT wp_posts.ID, wp_posts.post_title, wp_postmeta.meta_value,

我正在尝试获取按ID ASC排序的行,但我还希望随后将该结果随机化。因此,基本上,如果我想获取前15行,我希望它们随机出现,但作为前15行

基本上,我有一个框架来加载前15个客户端,还有一个按钮“加载更多”来加载15个客户端。我只是想让同样的15个客户按订单ID出来,但他们的位置是随机的

到目前为止,我已经做到了这一点,但最后的RAND()没有任何影响:

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']

有没有办法通过MySQL实现这一点,或者我真的必须为此拉出PHP?

当您有多个表达式按排序时,第二个表达式用于在第一个表达式相等的组内排序。它无法对已由第一个表达式排序的行重新排序

要重新排序某些内容,需要将第一个排序放入子查询中

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()