Mysql 如果第一行是随机化的,那么如何选择行,其余的应该按照标准排序
我的数据库表“hotels”具有以下结构:Mysql 如果第一行是随机化的,那么如何选择行,其余的应该按照标准排序,mysql,sql,select,sql-order-by,Mysql,Sql,Select,Sql Order By,我的数据库表“hotels”具有以下结构: id (int) name (varchar) is_top (tinyint) price (smallint) 该表包含以下数据: id|name|is_top|price 1|Vean|1 |2.05 2|Gret|0 |5.10 3|Kapa|0 |0.72 4|Yeny|0 |0.39 5|Lena|1 |0.95 如何选择按“is_top”(降序和随机化)排
id (int)
name (varchar)
is_top (tinyint)
price (smallint)
该表包含以下数据:
id|name|is_top|price
1|Vean|1 |2.05
2|Gret|0 |5.10
3|Kapa|0 |0.72
4|Yeny|0 |0.39
5|Lena|1 |0.95
如何选择按“is_top”(降序和随机化)排序的行,以及按价格升序排序的其余行
我尝试了以下查询,但未成功:
SELECT id, name, is_top, price
FROM `hotels`
ORDER BY IF (is_top=1, RAND(), price) ASC
编辑:预期结果应为:
id|name|is_top|price
5|Lena|1 |0.95
1|Vean|1 |2.05
4|Yeny|0 |0.39
3|Kapa|0 |0.72
2|Gret|0 |5.10
前两行(其中is_top=1)应始终随机。您的
order by
子句应该有两列-第一列是is_top
,第二列是计算的案例
表达式-兰德()
当is_top
是1
或价格
否则:
SELECT id, name, is_top, price
FROM `hotels`
ORDER BY is_top DESC, CASE is_top WHEN 1 THEN RAND() ELSE price END ASC
你能告诉我你希望给你的样本数据如何排序吗?我不确定我是否在跟踪。。。