根据列中的分组元素对项目进行编号

雷恩

这是我的表:

Item1   | Item2     | Item3     | Element   | ItemNumber
==============================================================
rock    | n         | roll      | r         | 1
rock    | n         | roll      | o         | 0
rock    | n         | roll      | c         | 0
rock    | n         | roll      | k         | 1
rock    | n         | roll      | n         | 2
rock    | n         | roll      | r         | 3
rock    | n         | roll      | o         | 0
rock    | n         | roll      | l         | 0
rock    | n         | roll      | l         | 3
a       | tiny      | rock      | a         | 1
a       | tiny      | rock      | t         | 2
a       | tiny      | rock      | i         | 0
a       | tiny      | rock      | n         | 0
a       | tiny      | rock      | y         | 2
a       | tiny      | rock      | r         | 3
a       | tiny      | rock      | o         | 0
a       | tiny      | rock      | c         | 0
a       | tiny      | rock      | k         | 3

我想ItemNumber根据列中的值更新列,使其所有元素都对应于它所属的项目编号Element基本上,我只想将正确的缺失值添加到ItemNumber当前所在的位置0我的表中有超过 600.000 行,其中包含不同数量的元素。

决赛桌应如下所示:

Item1   | Item2     | Item3     | Element   | ItemNumber
==============================================================
rock    | n         | roll      | r         | 1
rock    | n         | roll      | o         | 1
rock    | n         | roll      | c         | 1
rock    | n         | roll      | k         | 1
rock    | n         | roll      | n         | 2
rock    | n         | roll      | r         | 3
rock    | n         | roll      | o         | 3
rock    | n         | roll      | l         | 3
rock    | n         | roll      | l         | 3
a       | tiny      | rock      | a         | 1
a       | tiny      | rock      | t         | 2
a       | tiny      | rock      | i         | 2
a       | tiny      | rock      | n         | 2
a       | tiny      | rock      | y         | 2
a       | tiny      | rock      | r         | 3
a       | tiny      | rock      | o         | 3
a       | tiny      | rock      | c         | 3
a       | tiny      | rock      | k         | 3

我怎样才能用 MySQL 做到这一点?

花哨的裤子

您需要的是一列,它唯一标识每一行。拥有这样一个列(又名主键)总是一个好主意。

另一列使用将是确定行的排序顺序的列。换句话说,当您选择包含元素 r、o、l 和 l 的行时,列应列在包含 r、o、c 和 k 的行之后。在一个可能的解决方案中,我为此使用了一个 auto_increment 列。

CREATE TABLE t
    (id int auto_increment primary key, `Item1` varchar(4), `Item2` varchar(4), `Item3` varchar(4), `Element` varchar(1), `ItemNumber` int)
;

INSERT INTO t
    (`Item1`, `Item2`, `Item3`, `Element`, `ItemNumber`)
VALUES
    ('rock', 'n', 'roll', 'r', 1),
    ('rock', 'n', 'roll', 'o', 0),
    ('rock', 'n', 'roll', 'c', 0),
    ('rock', 'n', 'roll', 'k', 1),
    ('rock', 'n', 'roll', 'n', 2),
    ('rock', 'n', 'roll', 'r', 3),
    ('rock', 'n', 'roll', 'o', 0),
    ('rock', 'n', 'roll', 'l', 0),
    ('rock', 'n', 'roll', 'l', 3),
    ('a', 'tiny', 'rock', 'a', 1),
    ('a', 'tiny', 'rock', 't', 2),
    ('a', 'tiny', 'rock', 'i', 0),
    ('a', 'tiny', 'rock', 'n', 0),
    ('a', 'tiny', 'rock', 'y', 2),
    ('a', 'tiny', 'rock', 'r', 3),
    ('a', 'tiny', 'rock', 'o', 0),
    ('a', 'tiny', 'rock', 'c', 0),
    ('a', 'tiny', 'rock', 'k', 3)
;

UPDATE t
JOIN (
  SELECT
  t.*
  , @v := IF(ItemNumber != 0, ItemNumber, @v) as new_itemnumber
  FROM
  t
  , (SELECT @v:=0) var_init_subquery
  ORDER BY id
  ) sq USING (id)
SET t.ItemNumber = sq.new_itemnumber;
  • 这里看到它在 sqlfiddle 中实时工作

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据框架列中的运行编号来聚合/分组

来自分类Dev

根据tcl中的总和对列表中的元素进行分组

来自分类Dev

如何根据列中的值对行进行编号

来自分类Dev

根据日期对数组中的项目进行分组

来自分类Dev

如何根据连续的行值对熊猫中的元素进行分组

来自分类Dev

如何根据流中的时间对元素进行分组?

来自分类Dev

Excel中的值根据列中的重复值进行分组

来自分类Dev

根据分组列值分组表元素

来自分类Dev

根据列进行分组和取消分组

来自分类Dev

根据相似的列对行进行编号

来自分类Dev

使用XSLT根据给定的编号对XML文件进行分组

来自分类Dev

如何根据列数据对jqgrid中的数据进行分组

来自分类Dev

根据列表中的类别对列进行分组

来自分类Dev

根据SQL Server中的两列对数据进行分组

来自分类Dev

如何根据特定条件对列中的字段进行分组

来自分类Dev

根据日期列对数据框中的行进行分组

来自分类Dev

如何根据数组中的项目数量对x的字符串数量进行编号

来自分类Dev

根据项目内容对列表进行分组

来自分类Dev

根据项目内容对列表进行分组

来自分类Dev

根据时间戳对项目进行分组

来自分类Dev

如何根据每个元素中的某些信息对列表中的元素进行分组?

来自分类Dev

根据单个值对元素进行分组

来自分类Dev

根据单个值对元素进行分组

来自分类Dev

根据列中的公共编号分配递增编号

来自分类Dev

根据多列对矩阵的行进行分组

来自分类Dev

PostgreSQL:根据时间间隔对列进行分组

来自分类Dev

R根据多个列的组合进行分组

来自分类Dev

根据另一列进行分组

来自分类Dev

根据列总和值对行进行分组

Related 相关文章

热门标签

归档