您好我想在表中添加一个ID为Incremental的列,但我想这个ID的增量取决于其他列。
这是我的表
我是Mysql的新手。我想在表中添加一个列,其值取决于同一个表中的另一个列值。例如,我有如下的company_table:
code | name | type |
----------------------------
AAA | AAAAA | A |
BBB | BBBBB | A |
CCC | CCCCC | C |
DDD | DDDDD | D |
EEE | EEEEE | D |
我想为类型A添加ID增量。示例
code | name | type | ID |
----------------------------------
AAA | AAAAA | A | 1 |
BBB | BBBBB | A | 2 |
CCC | CCCCC | C | NULL|
DDD | DDDDD | D | NULL|
EEE | EEEEE | D | NULL|
有什么想法吗?谢谢!
答案 0 :(得分:0)
您可以使用变量执行此操作:
select t.*,
(case when type = 'A' then @rn := @rn + 1 end) as id
from t cross join
(select @rn := 0) params
order by code;
注意:SQL表代表无序集。需要order by
来保证行的排序。根据您的数据,看起来第一列确定了排序。
编辑:
相同的基本思想可用于表格中的列。如果你没有专栏:
alter table t add column id int;
然后:
set @rn := 0;
update t
set id = (@rn := @rn + 1)
where type = 'A'
order by ??;
如果您关心值的排序,请将相应的列放在order by
子句中。否则,值将是正确的,但它们的顺序不确定。