mysql - 使用 MySQL 选择查询以随机顺序对特定数据组的记录进行排序

标签 mysql sql select sql-order-by

我有一个下面的数据库表结构:

Tablename : agency_mst
Fields:
id
name
is_premium
date_added

我想对数据进行排序,使具有 is_premium=1 的代理商排在第一位,其余数据按 date_addeddesc 顺序排序。

但 is_premium=1 记录也应按随机顺序排序。所以第一批高级代理商将有随机顺序。我如何使用 MySQL Select 查询来做到这一点。

我已经部分构建了这个查询,但不确定如何过滤特定的数据集。以下是该查询:

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/

相关文章:

php mysql 对结果集进行过滤

mysql - 这个sql请求我错过了什么?

mysql - 在 MySQL 中将一对多关系重构为多对多 : How to formulate the query?

sql - 如何使用分层子查询构建层次结构路径

PHP MySQL 插入问题

sql - 连接地理范围内的表

SQL - 从 DateTime 字段中仅选择 'Year'

php - PHP 脚本中的错误报告

MySql - 使用 COALESCE 检索正确的值?

sql - 做一个双重用途的查询,还是两个单独的查询?