gpt4 book ai didi

mysql一次更改复制多条记录

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

这是一个表 Evact:

+--------------+-----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-----------------------+------+-----+---------+-------+
| EvActMas | char(10) | NO | PRI | | |
| EvActSub | char(10) | NO | PRI | | |
| EvActCode | char(10) | NO | PRI | | |
| EvActIncOutg | enum('I','O','B','N') | YES | | NULL | |
| EvActBudAct | enum('B','A','O') | YES | | NULL | |
...other columns ...

这里有一些记录:

EvActMas    EvActSub    EvActCode   EvActIncOutg    EvActBudAct ..other..

Bank-2017 Incoming mth01 I A
Bank-2017 Incoming mth02 I A
Bank-2017 Incoming mth03 I A
Bank-2017 Incoming mth04 I A
Bank-2017 Incoming mth05 I A
Bank-2017 Incoming mth06 I A

我想向表中添加 6 条新记录,其中“传入”更改为“传出”,“I”更改为“O”。

我通过从旧表创建一个新表来做到这一点,这很困难;更新新表,然后插入回 Evact:

Create table btemp like Evact;
update btemp set Evact = 'Outgoing', EvActIncOutg = 'O';
insert into Evact select * from btemp;

这很有效,但我想在 SQL 方面做得更好。我希望有一种方法可以通过以某种方式将 Evact 自身加入来一步完成此操作。有人有建议吗?

最佳答案

如果您想插入一堆作为现有行的部分副本的行:

INSERT INTO evact 
SELECT evactmas, 'Outgoing', evactcode, 'O', evactbudact, ...other..
FROM evact

您创建一个 Select 语句,即要插入的数据,选择中的某些列是原值,其他列是新值

如果您没有在选择中指定所有列,则必须在 INTO 后面的括号中放置列名列表,以便 MySQL 知道哪些列要获取哪些数据。仅当您的选择查询选择表中相同数量的列时,才可以省略列列表(在这种情况下,所选列的顺序必须与要插入的表列的顺序相同)

如果您的表有一个计算主键(例如自动增量),请将要插入的值指定为 0 或 NULL,以便 MySQL 为其计算一个新值,或者在 INTO 之后命名除该列之外的所有列并省略它从选择列表中

关于mysql一次更改复制多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48015878/

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