我有这张桌子,这里有大约250行。我想要返回所有行,但是首先我想在字段spazio = 'auditorium'
中显示六行,然后以随机顺序显示所有其余行。
我尝试过类似的
SELECT * FROM table ORDER BY case when spazio = 'auditorium' then case spazio != 'auditorium' RAND()
但是它没有返回我想要的东西。
答案 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`
)
,所以您希望通过降序排列将听觉放在结果集中。