色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql 分組前n條

李中冰2年前10瀏覽0評論

在MySQL中,我們可以使用LIMIT來限制查詢結果返回的行數,但是如果想要分組查詢并返回每組前N條記錄,該怎么實現呢? MySQL提供了子查詢和變量來實現這個功能。

SELECT *
FROM   (SELECT *,
@num := IF(@group = group_name, @num + 1, 1) AS row_number,
@group := group_name                             AS dummy
FROM   table_name
CROSS JOIN (SELECT @group := '', @num := 0) AS init
ORDER  BY group_name,
sort_key) AS t
WHERE  row_number<= N;

以上SQL語句首先將子查詢中的@group和@num變量初始化為一個空字符串和0。然后,在SELECT子句中使用IF語句對@num進行累加,并將其命名為row_nubmer。

當變量@group與表中group_name不同時,將其更新為當前group_name值。由于MySQL中是按照ORDER BY子句指定的字段排序的,因此查詢結果相同group_name的行將被放在一起。

最后,在外部查詢中將結果限制為前N行,并返回結果。

通過這種方式,我們可以方便地實現查詢每個組的前N條記錄的功能。