2017-01-09 39 views
1

需要与得到的查询权帮助复位...... 我有一个表tablA有以下记录:查询计数,根据现场

Name, Item 
----------- 
John, Pen 
Alex, Crayon 
John, Ruler 
John, Pencil 
Bryan, Marker 
Alex, Sticker 

我需要一个查询来 一)号记录一个人正在为新人重设该值。 二)按名称排序,然后按项目

的以下结果是我会想拥有的一切:

Name, Item, Cnt 
------------------- 
Alex, Crayon, 1 
Alex, Sticker, 2 
Bryan, Marker, 1 
John, Pen,  1 
John, Pencil, 2 
John, Ruler, 3 

我想到的是这样......(但我不知道如何重置Cnt当出现新的人):

select Name, Item, @cntrow: @cntrow+1 as Cnt from tablA, 
(select @cntrow:=0) rx 
order by Name, Item 

回答

1

使用另一个变量:

select 
    @cntrow := case when @grp <> Name then 1 else @cntrow + 1 end as Cnt, 
    @grp := Name as Name, 
    Item 
from tablA 
cross join(select @cntrow:=0, @grp := null) rx 
order by Name, Item 
+0

临屋你好。那样做了。但似乎我需要先排序。 –