MySQL分組取每組前十的文章
在實(shí)際應(yīng)用中,我們需要根據(jù)某些規(guī)則,對(duì)數(shù)據(jù)進(jìn)行分組,然后再對(duì)每組數(shù)據(jù)進(jìn)行排序等操作。這時(shí),MySQL中的分組函數(shù)就能夠派上用場了。
分組函數(shù)GROUP BY
GROUP BY語句可以將數(shù)據(jù)按照指定的列分組,然后進(jìn)行聚合計(jì)算。例如:
SELECT column1, column2, COUNT(column3) FROM table_name GROUP BY column1, column2;
這條SQL語句會(huì)將table_name數(shù)據(jù)表中的數(shù)據(jù)按照column1和column2列分組,并計(jì)算每組中column3列的值的數(shù)量。
取每組前十的數(shù)據(jù)
如果我們想要在每組數(shù)據(jù)中取出前10條,可以使用MySQL中的子查詢。例如:
SELECT * FROM (SELECT * FROM table_name ORDER BY column3 DESC) AS t GROUP BY column1 LIMIT 0,10;
這條SQL語句中,子查詢SELECT * FROM table_name ORDER BY column3 DESC會(huì)將數(shù)據(jù)表按照column3列進(jìn)行降序排列,然后再按照column1列進(jìn)行分組。最后用AS t給結(jié)果集重命名為t,并使用LIMIT 0,10語句來取前10條數(shù)據(jù)。
使用JOIN進(jìn)行連接查詢
有時(shí)我們需要連接兩個(gè)表進(jìn)行查詢,此時(shí)可以使用MySQL中的JOIN語句。例如:
SELECT table_name1.column1, table_name1.column2, table_name2.column3 FROM table_name1 JOIN table_name2 ON table_name1.column1 = table_name2.column1 GROUP BY table_name1.column1 LIMIT 0,10;
這條SQL語句會(huì)連接table_name1和table_name2兩個(gè)數(shù)據(jù)表,按照table_name1中的column1列進(jìn)行分組,并取每組前10條數(shù)據(jù)。