我有一个下面的数据库表结构:
Tablename : agency_mst
Fields:
id
name
is_premium
date_added
我想对数据进行排序,使具有 is_premium=1 的代理商排在第一位,其余数据按 date_addeddesc 顺序排序。
但 is_premium=1 记录也应按
我已经部分构建了这个查询,但不确定如何过滤特定的数据集。以下是该查询:
SELECT * FROM agency_mst
ORDER BY is_premium DESC, date_added DESC
最佳答案
怎么样
SELECT *
FROM agency_mst
ORDER BY IF(is_premium=1, RAND(), -1.0), date_added DESC
这将对匹配的行使用随机排序,然后将其他行放在最后,并按日期排序。
不过要注意性能。 ORDER BY RAND()
在任何变体中都是具有许多行的表中臭名昭著的性能反模式。
关于mysql - 使用 MySQL 选择查询以随机顺序对特定数据组的记录进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45715324/