我在数据库中有一个表,其中有两列名为item和slot。我想创建另一个用数字填充的列(称为cid),以便:
如果可能,我想运行一个执行该操作的SQL查询。
按要求编辑:
| item | slot | what cid should be
| a | x | 1
| a | y | 2
| a | y | 2
| a | z | 3
| b | x | 1
| b | y | 2
| b | q | 3
| c | x | 1
答案 0 :(得分:0)
您可以通过枚举每个项目的插槽来执行您想要的操作:
select t.*,
(@cid := if(@i = item, if(@s = slot, @cid, if(@s := slot, @cid + 1, @cid + 1))
if(@i := item and @s := 0, 1, 1)
)
) as cid
from t cross join
(select @i := -1, @cid := 0, @s := 0) param
order by item;