【问题标题】:limit in position order by clause [duplicate]通过子句限制位置顺序[重复]
【发布时间】:2016-05-21 19:05:06
【问题描述】:

如何通过随机数限制顺序:

q_id    position    qtn     level
1           1       demo      1
2           1       demo12    1
3           1       demo21    1
4           2       demo22    1
5           2       demo11    1
6           2       demo31    1
7           3       demo41    1
8           3       demo51    1
9           4       demo61    1

我想要的是,

q_id    position    qtn     level
3           1       demo21    1
4           2       demo22    1
8           3       demo51    1
9           4       demo61    1

我试过了:

SELECT q_id, position, qtn, level FROM tbl WHERE level = '1' ORDER BY position, RAND()

如何在 ORDER BY 中使用 LIMIT 位置

【问题讨论】:

  • 没听懂。再解释一下。
  • @SubrataDeyPappu 我想将限制 1 放在适当的位置。
  • 可以使用 Group By w3schools.com/sql/sql_groupby.asp,但会显示分组中的数据
  • @PhpDeveloper 如果我使用GROUP BY 那么它总是只显示第一条记录,而不是随机的

标签: mysql


【解决方案1】:

如果您只希望每个位置有 1 行,则可以使用 group by。请注意,我们需要先在内部查询中随机化顺序:

SELECT q_id, position, qtn, level 
FROM (select * from Table1 order by rand()) a
WHERE level = '1' 
group by position

fiddle

【讨论】:

    【解决方案2】:

    在开头使用DISTINCT 命令作为SELECT DISTINCT(YOUR QUERY),因为这将有助于该位置的单个条目。您可以组合使用RAND(),以便随机选择位置。希望这对您有所帮助。

    【讨论】:

      【解决方案3】:

      试试这个

      SELECT q_id, position, qtn, level 
      FROM tbl WHERE level = '1' 
      ORDER BY position, RAND() 
      GROUP BY position Limit 4
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-29
        • 1970-01-01
        • 2015-11-07
        • 1970-01-01
        • 2012-01-05
        • 1970-01-01
        • 2014-08-27
        • 1970-01-01
        相关资源
        最近更新 更多