gpt4 book ai didi

MySQL填充空列

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:47 25 4
gpt4 key购买 nike

我有下表:MyTable(id, group_column, column_to_fill)

当前“column_to_fill”为空,我想用递增的整数填充它。 group_column 的每个值都应从 0 开始。

我的表格是这样的:

+-----------------------------------+------------+----------------+
| id |group_column| column_to_fill |
+-----------------------------------+------------+----------------+
| 9b71dd5c-d8a6-461c-b1f3-af1e4b1d | Value1 | null |
| 38886977-0f34-4059-b192-f94f5aed | Value1 | null |
| d98e16da-a919-4242-baf8-dbbef636 | Value2 | null |
| e1ab88a9-3307-49a6-b37d-72cdb5da | Value2 | null |
| 75174dcb-eb74-4c13-80a1-1b21905d | Value2 | null |
+-----------------------------------+------------+----------------+

我希望它看起来像这样:

+-----------------------------------+------------+----------------+
| id |group_column| column_to_fill |
+-----------------------------------+------------+----------------+
| 9b71dd5c-d8a6-461c-b1f3-af1e4b1d | Value1 | 0 |
| 38886977-0f34-4059-b192-f94f5aed | Value1 | 1 |
| d98e16da-a919-4242-baf8-dbbef636 | Value2 | 0 |
| e1ab88a9-3307-49a6-b37d-72cdb5da | Value2 | 1 |
| 75174dcb-eb74-4c13-80a1-1b21905d | Value2 | 2 |
+-----------------------------------+------------+----------------+

如何在 MySQL 中更新它?

最佳答案

我建议将此作为:

set @rn := -1;
set @g := '';

update t
set column_to_fill = if(@g = group_column, @rn := @rn + 1,
if(@g := group_column, @rn := 0, @rn := 0)
)
order by group_column;

在 MySQL 中使用变量时,真正记住表达式的计算顺序是不能保证的,这一点很重要。因此,您需要将变量的所有引用和赋值放入同一个表达式中。

在 MySQL 8+ 中,您可以:

update t join
(select t.*, row_number() over (partition by group_column order by group_column) as seqnum
from t
) tt
on t.id = tt.id
set column_to_fill = seqnum - 1;

关于MySQL填充空列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51798137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com