2013-03-27 36 views
0

我有表中的数据是这样做有自动增量号假列在:如何“按组”查询

fgid qty ntid 
1  100 10 
2  90 10 
6  200 11 
1  80 11 
1  120 12 
6  100 12 
6  30 13 

我可以把查询:

SELECT fgid, SUM(qty) AS total_qty, COUNT(ntid) AS nt_count FROM sofg 
GROUP BY fgid 

和结果是:

fgid total_qty nt_count 
1  300   3 
2  90   1 
6  330   3 

然后我想使结果这样

no fgid total_qty nt_count 
1  1  300   3 
2  2  90   1 
3  6  330   3 

如何做到这一点与查询?其中'没有'是(like)自动增加的数字。

回答

1

试试这个查询。

SELECT 
    @rownum := @rownum + 1 rownum, 
    t.* 
    FROM (SELECT @rownum:=0) r, 
    (
    SELECT fgid, SUM(qty) AS total_qty, COUNT(ntid) AS nt_count FROM sofg GROUP BY fgid 
) t; 
+0

您的查询工作。但是,当我尝试用您的查询创建一个视图,出现错误警告“[犯错] 1351 - 视图的SELECT包含一个变量或参数”。 – Fredy 2013-04-01 00:37:46

1

基本上一样Dhinakaran的答案,但有没有必要把整个主查询到的子查询。他的回答可能会更令人高兴,但是请接受Dhinakaran的回答,因为他的速度更快。

SELECT 
@rownum:[email protected] + 1 as rownumber, 
fgid, 
SUM(qty) AS total_qty, 
COUNT(ntid) AS nt_count 
FROM sofg 
, (select @rownum:=0) v 
GROUP BY fgid 
+0

(select @rownum:= 0)是一个子查询;-) – Strawberry 2013-03-27 10:34:04

+0

呃,我错过了什么吗?这两者不是相互排斥的。引用手册 - '子查询是另一个语句中的SELECT语句。' – Strawberry 2013-03-27 10:41:55

+0

您的查询工作。但是,当我尝试用您的查询创建一个视图,出现错误警告“[犯错] 1351 - 视图的SELECT包含一个变量或参数”。 – Fredy 2013-04-01 00:38:05