簡體   English   中英

如何使用RANDOM()在SQL中選擇每個組的第一/最后/…行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM