mysql基于上一条记录的增量值

mysql基于上一条记录的增量值,mysql,increment,record,Mysql,Increment,Record,我有一张桌子 Id|Parent|Counter --|------|------- 1| A | NULL 2| A | NULL 3| A | NULL 4| B | NULL 5| B | NULL 6| C | NULL 7| D | NULL 8| D | NULL 我想更新该表,使计数器列为update+1,只要previousparent=parent。如果不是,计数器=1,则: 我有350万张唱片 我可以得到一个

我有一张桌子

Id|Parent|Counter
--|------|-------
 1| A    | NULL
 2| A    | NULL 
 3| A    | NULL
 4| B    | NULL
 5| B    | NULL
 6| C    | NULL
 7| D    | NULL
 8| D    | NULL
我想更新该表,使计数器列为update+1,只要previousparent=parent。如果不是,计数器=1,则:

我有350万张唱片

我可以得到一个select查询,但可以让它与update一起工作。这就是我所拥有的:

SELECT  t.Parent, (
  SELECT COUNT( * ) 
  FROM bomitems AS x
  WHERE x.id <= t.id
  AND x.Parent = t.Parent
  ) AS Counter
FROM bomitems AS t

您编写了一个好的、聪明的查询来生成这些行号,这避免了使用会话变量的混乱解决方案。要进行更新,只需将您的表BOM表加入此查询:

UPDATE bomitems t1
INNER JOIN
(
    SELECT
    t.ID,
    t.Parent,
    (SELECT COUNT(*) FROM bomitems AS x WHERE x.id <= t.id AND x.Parent = t.Parent) AS Counter
    FROM bomitems t
) t2
    ON t1.ID = t2.ID
SET t1.Counter = t2.Counter;

我在我本地的MySQL工作台上测试了这个查询,它似乎正常工作。

我要问你,你试过什么了吗?这将是一个非常重要的问题,需要有人来写。请看我关于目前进展的问题
UPDATE bomitems t1
INNER JOIN
(
    SELECT
    t.ID,
    t.Parent,
    (SELECT COUNT(*) FROM bomitems AS x WHERE x.id <= t.id AND x.Parent = t.Parent) AS Counter
    FROM bomitems t
) t2
    ON t1.ID = t2.ID
SET t1.Counter = t2.Counter;