MySQL的GROUP BY語句可以根據指定的列對結果進行分組,然后進行聚合函數的計算,例如求和、平均值、最大值、最小值等等。但是有時候我們想要查詢某個分組中的第10條記錄,該怎么辦呢?下面介紹一種解決方法。
首先,我們需要將查詢結果根據指定的列進行分組,例如:
SELECT category, COUNT(*) AS count FROM products GROUP BY category;
這將得到如下結果:
+----------+-------+ | category | count | +----------+-------+ | A | 5 | | B | 3 | | C | 2 | +----------+-------+
接下來,我們需要使用子查詢來獲取指定分組中的第10條記錄。具體做法是先將分組結果作為子查詢,然后在外層查詢中加入LIMIT語句,例如:
SELECT * FROM ( SELECT category, product_name, price FROM products WHERE category = 'A' ORDER BY price DESC LIMIT 10 ) AS t ORDER BY price ASC LIMIT 1;
這將得到指定分組中價格最低的產品。可以看到,我們在內層查詢中按照價格倒序排列,并使用LIMIT 10限制結果數量,然后在外層查詢中再次按照價格升序排列,并使用LIMIT 1僅返回第1條結果。
需要注意的是,如果某個分組中不到10條記錄,那么返回的將是該分組中的所有記錄。因此,這種方法可能并不適用于所有情況。