我希望有一个两个请求的联合但是第二个的rand()的顺序不起作用..
(select * from survey
where is_priority = 1)
union all (
select * from (
select * from survey
order by rand()
) as t );
结果如下:
答案 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();
不可否认,这会将优先级最高的行按随机顺序排列(其中)。但是您没有为它们指定订单(如果只有一行优先级条件为真,则这不是问题。)