gpt4 book ai didi

mysql - 根据现有数据插入/更新 mysql 列

转载 作者:行者123 更新时间:2023-11-29 01:36:57 25 4
gpt4 key购买 nike

我通过将数据添加到现有列来更新现有表。

我已经有了要插入的数据的输出,但由于记录的数量,我正在寻找将其插入到我的表中而无需手动写入每一行 sql 的最佳方法。

这是我要插入的 sql(部分)

INSERT INTO `tbl_user_variables_dobRE` (`user_id`, `value`) VALUES
(150, '1959-11-02'),
(151, '1948-04-20'),
(152, '1961-06-18'),

这是我要插入的表格

id         | 7
username | guestinvite
password | BLANK
forname | forname
surname | surname
email | guestinvite@test.com
address_id | 286
type_id | 4
dob | 0000-00-00
plusGuest | 0
update | 2016-02-16 11:54:36
created | 2016-04-04 17:03:12

所以我想将第二个项目插入第一个项目 = id 的“dob”列

有没有办法以编程方式执行此操作,还是我必须为每一行编写 WHERE & OR 语句?

最佳答案

您在帖子中标记了 MySql 和 sql-server。以下假设您使用的是 SQL Server,但这个想法在 MySQL 中保持不变(只是语法不同)...

如果我没理解错的话,这听起来像是您想执行 UPDATE,而不是 INSERT,因为您正在修改现有行。

您说您有要插入的数据的输出 - 将其插入到 TEMP 表中并将其连接到您要更新 ID 匹配的表中。

BEGIN TRANSACTION [Transaction1]  -- Do large updates as transactions to avoid data loss

CREATE TABLE #temp ( -- Create temp table
[user_id] int,
[dob] nvarchar(20)
)

INSERT INTO #temp
-- YOUR SELECT GOES HERE
SELECT my_id as [user_id], my_dob as [dob]


UPDATE my_table
SET my_table.dob = t.dob
FROM tbl_user_variables_dobRE my_table
INNER JOIN #temp t ON t.user_id = my_table.id

DROP TABLE #temp

如果你的数据看起来不错,提交事务:(不要停留太久,事务锁定表数据!)

COMMIT TRANSACTION [Transaction1]

否则:

ROLLBACK TRANSACTION [Transaction1]

关于mysql - 根据现有数据插入/更新 mysql 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39414579/

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