MySQL ORDER BY > 如果值相等则交换结果

标签 mysql sql-order-by

我正在使用一个简单的 MySQL 语句来查询我的数据库以获取按点击次数排序的产品建议:

SELECT * FROM suggestions WHERE source = :source_item_id ORDER BY clicks DESC LIMIT 7

一切都按预期工作。但是,如果点击次数相同,有没有办法让MySQL随机吐出来?

例子:

Product  Clicks
1        2
2        2
3        3

如果查询的话,顺序是3,2,1,如果点击没有变化,就一直是这个顺序。我如何随机分配每个点击次数为 w 的产品 1 和 2?我时不时地想交换结果,即将结果设为 3、1、2,也许下一次是 3、2、1。

最佳答案

添加一个具有随机值的列并对其进行二次排序怎么样?

SELECT product, clicks, RAND() AS rand 
FROM suggestions 
WHERE source = :source_item_id 
ORDER BY clicks, rand 
DESC 
LIMIT 7

关于MySQL ORDER BY > 如果值相等则交换结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12126638/

相关文章:

sql - ORDER BY IN 值列表

mysql - MYSQL中的数据排序问题

mysql - 使用条件按两列排序?

python - 在 django 模型查询集中按自定义属性排序的好方法是什么?

PHP从MYSQL中选择多个表

mysql - 有没有办法在 SQL 中乘以结果?

mysql - 将全文搜索的分数相加 MATCH 在一起

mysql - 在最高分上添加特定分数

mysql - 使用 MySQL 进行事件相关性查询

mysql - 查询在唯一或首先查询时失败更快吗?