【问题标题】:MySQL select random rows with order byMySQL按顺序选择随机行
【发布时间】:2013-01-14 09:57:42
【问题描述】:

我想从表中检索随机行,但这些行必须按类别排序。

select category, 
   (select order_number 
   from orders 
   where order_number in (123,125,128,129,256,263,966,258,264,159,786) 
   order by rand()) 
from orders 
order by category

这是我尝试过的查询。但这会检索表中的整个数据。


有效的查询;

SELECT category,order_number FROM (
    SELECT category,order_number 
    from orders 
    where order_number in (`$order_numbers_variable`) 
    order by rand()
) order by category

【问题讨论】:

  • 所有这些数字中你想要多少行?
  • 大约 111 行。我的意思是有 111 行。 Order_number 字段是唯一的。 Category 字段重复。所以我想order by category同时选择随机order_number。这就像分组字段中的顺序。

标签: mysql random sql-order-by


【解决方案1】:

我假设要求是: 从按“类别”排序的表中检索“N”个随机行

假设 N10。如果要更改行数,请在 LIMIT 子句中更改。

SELECT * FROM (
    SELECT category from orders ORDER BY rand() ASC  LIMIT 10
) AS innerResult 
ORDER BY innerResult.category

【讨论】:

  • @Yasin Yörük 如果这个答案有帮助,请告知。
  • 谢谢朋友。您的查询是帮助我解决我的问题。我在查询中做了一些小改动。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
  • 1970-01-01
  • 2010-11-19
  • 2011-09-26
  • 1970-01-01
  • 2011-04-16
  • 2015-11-23
相关资源
最近更新 更多