2014-10-11 51 views
0

,我有以下表中的数据:MySQL的计数cccurrence并加入回同桌

ID DrawDate DrawNumber 
1 01/01/2014 1234 
2 01/01/2014 1235 
3 01/01/2014 1236 
4 02/01/2014 1237 
5 02/01/2014 1234 
6 02/01/2014 1238 
7 03/01/2014 1234 
8 03/01/2014 1235 
9 03/01/2014 1239 

我想MySQL的计数DrawNumber的发生,并填充回的结果是显示如下:

ID DrawDate DrawNumber Occuurence 
1 01/01/2014 1234  3 
2 01/01/2014 1235  2 
3 01/01/2014 1236  1 
4 02/01/2014 1237  1 
5 02/01/2014 1234  3 
6 02/01/2014 1238  1 
7 03/01/2014 1234  3 
8 03/01/2014 1235  2 
9 03/01/2014 1239  1 

我设法拥有以下MYSQL代码,但它似乎将现有数据库的总记录数加倍。

SELECT 
DISTINCT table.ID, table.DrawDATE,table.DrawNumber. 
(SELECT 
COUNT(table.ID) 
FROM table 
WHERE table1.DrawNumber = table.DrawNumber 
) AS Occuurence 

FROM table 
INNER JOIN table AS table1 ON table.DrawNumber = table1.DrawNumber 
ORDER BY table.DrawDATE DESC 

任何人都可以建议更好的MySQL查询?

在此先感谢。

CK

回答

0

尝试如下:

SELECT 
DISTINCT a.ID, a.DrawDATE,a.DrawNumber,count(a.DrawNumber) as occurance 
(select * FROM table 
ORDER BY table.DrawDATE DESC)a group by a.DrawNumber 

如果你不想要,如果你想保持相同数量的记录在输出相同的表,那么你可以在下面尝试使用组查询:

SELECT 
DISTINCT table.ID, table.DrawDATE,table.DrawNumber. 
(SELECT 
COUNT(table.ID) 
FROM table 
WHERE table1.DrawNumber = table.DrawNumber 
) AS Occuurence 

FROM table 
ORDER BY table.DrawDATE DESC 
0

感谢Ronak Shah回答。

我使用另一种方法,其中我创建一个视图来获得count的结果,然后返回表。它工作正常。