查询根据字段计数和重置

时间:2017-01-09 12:22:36

标签: mysql sql sql-order-by generator

需要帮助才能正确查询... 我有一张表tablA,其中包含以下记录:

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

我需要查询 a)对一个人所拥有的记录进行编号,并为新人重置该值。 b)按名称排序,然后按项目

排序

以下结果是我想要的:

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 个答案:

答案 0 :(得分: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