在mySQL中联合,命令和RAND()

时间:2018-04-11 12:14:33

标签: mysql sql

我希望有一个两个请求的联合但是第二个的rand()的顺序不起作用..

(select * from survey 
where is_priority = 1)
union all (
  select * from (
    select * from survey 
    order by rand() 
    ) as t );

结果如下:

enter image description here

1 个答案:

答案 0 :(得分:0)

我推测你首先想要is_priority = 1,然后是随机顺序的其余部分。

如果是这样,您不应该使用union all执行此操作。只需将正确的键添加到order by

即可
select s.*
from survey s
order by (s.is_priority = 1) desc,  -- put priority 1 first in the result set
         rand();

不可否认,这会将优先级最高的行按随机顺序排列(其中)。但是您没有为它们指定订单(如果只有一行优先级条件为真,则这不是问题。)

相关问题