[英]How to RANDOM() select the first/least/… row per group in SQL?
我有一个样本数据:
id|category_id|name
--------------
1|1|test 1
2|1|test 2
3|1|test 3
4|2|test 4
5|2|test 5
6|2|test 6
和mysql
SELECT p.id, p.name, p.category_id
FROM `test` AS p
WHERE (SELECT count(*) FROM `test` f WHERE f.category_id = p.category_id AND f.id <= p.id) <= 2
ORDER BY RAND()
结果是:
1|1|test 1
2|1|test 2
4|2|test 4
5|2|test 5
=>但是结果不能RANDOM()值获取其他值(id = 3和id = 6),如何解决?
试试这个..把RAND放在where子句中而不是在ORDER BY中...
从
test
AS中选择SELECT p.id,p.name,p.category_id p在哪里(从test
f中选择count(*)从哪里f.category_id = p.category_id和f.id <= p.id)<= 2 AND RAND( )<= 6
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.