2012-08-29 52 views
0

我有一个表,看起来像这样第二列Mysql组如果第一列相等?

id | rating 
1 | 1 
1 | 3 
1 | 1 
1 | 2 
2 | 3 
2 | 3 
2 | 1 

等,你的想法。

不管怎样,我想这个结果落得集

id | rating | num 
1 | 1  | 2 
1 | 3  | 1 
1 | 2  | 1 
2 | 3  | 2 
2 | 1  | 1 

所以,我想要做的是组的评价我们一起只要ID是一样的

我想我可能只是做group by id, rating和只是认为这将组只有两列是相同的,但如果其中任何一列是一样的,所以我最终

id | rating | num 
1 | 1  | 7 

它不是组我该如何解决这个问题?

+0

你能发布您尝试过的查询? – Omesh

+0

是的,它看起来像是在你的查询语法错误,或者它可能是一个子查询和进一步的聚合正在进行,因为你提到的部分“GROUP BY ID,评级”毫无疑问是正确的语法为了你想要的东西。 –

回答

4

我不明白你遇到的问题。此查询的工作对我来说:

select 
    id, rating, COUNT(rating) as num 
FROM rating 
GROUP BY id, rating 
ORDER BY id, rating ASC; 

而且,只是要彻底,这是我的整个测试环节:

mysql> create table rating (id int, rating int); 
Query OK, 0 rows affected (0.04 sec) 

mysql> insert into rating values (1,1),(1,3),(1,1),(1,2),(2,3),(2,3),(2,1); 
Query OK, 7 rows affected (0.00 sec) 
Records: 7 Duplicates: 0 Warnings: 0 

mysql> select id, rating, COUNT(rating) as num FROM rating GROUP BY id, rating; 
+------+--------+-----+ 
| id | rating | num | 
+------+--------+-----+ 
| 1 |  1 | 2 | 
| 1 |  2 | 1 | 
| 1 |  3 | 1 | 
| 2 |  1 | 1 | 
| 2 |  3 | 2 | 
+------+--------+-----+ 
5 rows in set (0.00 sec) 
+1

http://sqlfiddle.com/#!2/e9f90/1 –

+0

谢谢@lc。我想它没有超过我的尺寸门槛。 –

+0

但是再一次,sqlfiddle比这更有价值...应该注意。干杯! –

1
SELECT id,rating,count(rating) from table group by id,rating 
3

你可以尝试

SELECT id,rating,COUNT(rating) AS num 
FROM table1 
GROUP BY id,rating 
ORDER BY id ASC 

SQLFiddle Demo

相关问题