按条款限制排名

时间:2016-02-11 06:07:00

标签: mysql

如何使用随机数按顺序限制:

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?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

试试这个

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