3

这是我得到的 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 语句?

4

3 回答 3

6

我相信这样的事情会奏效:

SELECT terms, COUNT( id) AS count 
    FROM table 
GROUP BY terms 
ORDER BY terms DESC
于 2012-04-25T17:10:29.947 回答
6

阅读:分组(Transact-SQL)

根据 SQL 中一个或多个列或表达式的值,将一组选定的行分组为一组汇总行。每组返回一行。SELECT 子句列表中的聚合函数提供有关每个组而不是单个行的信息。

您只需要申请group by子句即可获得结果

select terms, count (id) as count from table 
group by terms 
order by terms 
于 2012-04-25T17:12:40.637 回答
1

我非常需要一家二手唱片店来按字母顺序显示库存中的艺术家,括号中是他们的数量,例如:

斯莫基·罗宾逊和奇迹 (2) | 音速青年 (2) | 勺子 (3) | 钢铁丹 (1) | 史提夫汪达 (2) | 苏菲扬史蒂文斯 (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)";  

我网站中的实际代码更复杂,但这是它的基本内容。希望有帮助...

于 2012-05-08T20:29:01.200 回答