如何首先返回特定的行,然后在MySQL中随机分配其余行?

时间:2020-02-18 17:29:13

标签: mysql sql select sql-order-by

我有这张桌子,这里有大约250行。我想要返回所有行,但是首先我想在字段spazio = 'auditorium'中显示六行,然后以随机顺序显示所有其余行。 我尝试过类似的

SELECT * FROM table ORDER BY case when spazio = 'auditorium' then case spazio != 'auditorium' RAND()

但是它没有返回我想要的东西。

2 个答案:

答案 0 :(得分:0)

您需要一个ELSE,一个THEN和一个END。您还需要为第一个THEN分配一个数字,我要说它应该为0,所以它是按ASC顺序的第一个数字。

ORDER BY将所有内容减少为一个数字值,以使它们井然有序。 CASE语句需要给它一个数字。更不用说RAND返回0到1之间的数字,所以是十进制。实际上,它也可能返回0,因此加1更安全。

SELECT * FROM `table` ORDER BY CASE WHEN `spazio` = "auditorium" THEN 0 ELSE RAND() + 1 END ASC

答案 1 :(得分:0)

我建议使用两个SELECT * FROM table ORDER BY (spazio = 'auditorium') desc, RAND() 键:

true

第一个条件是布尔值。因为false> #standardSQL SELECT * EXCEPT(fixed_location) REPLACE(fixed_location AS visited_location) FROM ( SELECT *, LAST_VALUE(visited_location IGNORE NULLS) OVER(PARTITION BY person_id ORDER BY calendar_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) fixed_location FROM `project.dataset.person_visits` ) ,所以您希望通过降序排列将听觉放在结果集中。

相关问题