这是我得到的mySQL
id terms
1 a
2 c
3 a
4 b
5 b
6 a
7 a
8 b
9 b
10 b
我希望能够按照数量排序并以字母顺序列出以下内容。
terms count
a 4
b 5
c 1
我需要什么mySQL语句才能做到这一点?
SELECT terms, COUNT( id) AS count
FROM table
GROUP BY terms
ORDER BY terms DESC
在SQL中,通过一列或多个表达式的值将选定的一组行分组成一组汇总行。每个组返回一行。SELECT子句列表中的聚合函数提供有关每个组的信息,而不是单个行的信息。
您只需要应用group by
子句即可获得结果。
select terms, count (id) as count from table
group by terms
order by terms
我有一个非常类似的需求,需要一个二手唱片店按字母顺序显示库存中的艺术家及其数量,例如:
Smokey Robinson和The Miracles(2)| Sonic Youth(2)| Spoon(3)| Steely Dan(1)| Stevie Wonder(2)| Sufjan Stevens(1)|
请注意,在从我的“记录”表中提取时,我使用了SELECT DISTINCT。以下是相关的代码片段:
//QUERY
$arttool = mysql_query("SELECT DISTINCT * FROM records GROUP BY artist ORDER BY artist ASC");
//OUTPUT LOOP START
while($row = mysql_fetch_array($arttool)){
//CAPTURE ARTIST IN CURRENT LOOP POSITION
$current=$row['Artist'];
//CAPTURING THE NUMBER OF ALBUMS IN STOCK BY CURRENT ARTIST
$artcount = mysql_num_rows(mysql_query("SELECT * FROM records WHERE artist = '$current'"));
//ECHO OUT.
echo $current . "($artcount)";
我的网站上的实际代码更加复杂,但这是它的基本结构。希望这有所帮助...
group by
子句,一个count
聚合函数,以及一个order by
子句。 - Marc B