gpt4 book ai didi

mysql - 基于两个条件的 SQL 中的 ALTER 和 UPDATE 表

转载 作者:行者123 更新时间:2023-11-29 06:11:44 24 4
gpt4 key购买 nike

编辑 2:我更新了代码以按照建议放入逗号,并且更改了语法以将其作为 table.column。

我在 SQL 数据库中有两个表(如果需要的话,使用 Google 的 Cloud SQL)。第一个表 pre2016q1 包含列 tagadsh(以及其他几列)。我想添加列,然后用另一个表 num2016q1 中的值填充这些列,该表也有列 tagadsh 当值两个表中的值相等。

注意:这些是大表,每行超过 2MM。

Edit1:我在运行前询问,因为让数据库处于当前状态需要很长时间,我不想把整个事情搞砸。

问题一:下面的代码会执行上面描述的操作吗?

问题2:如果没有tagadsh等价物,记录会留空吗?

问题 3:名为 value 的列是否会导致任何问题,或者我应该事先重命名它吗?

问题 4:表的大小对操作所用的时间有影响吗? (我只问因为我需要做16次这个操作)。

ALTER TABLE pre2016q1
ADD
version VARCHAR(20),
ddate INTEGER,
qtrs INTEGER,
uom VARCHAR(20),
value NUMERIC(28,4),
footnote VARCHAR(512);

UPDATE
pre2016q1
SET
pre2016q1.ddate = num2016q1.ddate,
pre2016q1.qtrs = num2016q1.qtrs,
pre2016q1.uom = num2016q1.uom,
pre2016q1.value = num2016q1.value,
pre2016q1.footnote = num2016q1.footnote
WHERE
adsh.pre2016q1 = adsh.num2016q1 AND tag.pre2016q1 = tag.num2016q1;

最佳答案

问题 1:我会使用这样的东西

ALTER TABLE pre2016q1
ADD
version VARCHAR(20)
,ddate INTEGER
,qtrs INTEGER
,uom VARCHAR(20)
,value NUMERIC(28,4)
,footnote VARCHAR(512)
GO

UPDATE
pre
SET
pre.version = num.version
,pre.ddate = num.ddate
,pre.qtrs = num.qtrs
,pre.uom = num.uom
,pre.value = num.value
,pre.footnote = num.footnote
FROM pre2016q1 pre
INNER JOIN num2016q1 num
ON pre.adsh = num.adsh AND pre.tag = num.tag

问题 2 记录将为空白。

问题 3 如果您可以将其重命名为其他名称,那就太好了。

问题4记录的数量确实有影响,但不会花很多时间

关于mysql - 基于两个条件的 SQL 中的 ALTER 和 UPDATE 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37906564/

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