首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于现有数据插入/更新mysql列

基于现有数据插入/更新mysql列
EN

Stack Overflow用户
提问于 2016-09-09 15:03:56
回答 2查看 1.4K关注 0票数 2

我正在通过向现有列中添加数据来更新现有的表。

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

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

代码语言:javascript
复制
INSERT INTO `tbl_user_variables_dobRE` (`user_id`, `value`) VALUES
(150, '1959-11-02'),
(151, '1948-04-20'),
(152, '1961-06-18'),

这是我想把它插入的桌子

代码语言:javascript
复制
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

是否存在以编程方式执行此操作的方法,还是必须为每一行编写WHERE & or语句?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-09 15:19:53

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

如果我的理解是正确的,听起来您想要做一个UPDATE,而不是INSERT,因为您正在修改现有的行。

您说过要插入数据的输出--将其插入临时表并将其连接到要更新的id匹配的表中。

代码语言:javascript
复制
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

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

代码语言:javascript
复制
COMMIT TRANSACTION [Transaction1]

,否则:

代码语言:javascript
复制
ROLLBACK TRANSACTION [Transaction1]
票数 2
EN

Stack Overflow用户

发布于 2016-09-09 15:17:26

我能想到的最快的方法是创建一个临时表,其中包含您想要添加的新数据(您可以从CSV文件中大量导入这些数据)。

临时表只需要几个列--一列带有user_id,另一列带有dob --不管怎么说,您都会处理掉它。

然后你可以做这样的事情:

代码语言:javascript
复制
UPDATE tbl_user_variables_dobRE a
  JOIN tmp_table b
    ON ( a.user_id = b.user_id )
   SET a.dob = b.dob

一旦你这样做了,你可以DROP你的临时桌子,并成为好的去-祝好运!

重要

在更新数据时要非常小心--忘记添加一个子句很容易弄乱您的数据。如果可能的话,在使用实际的生产数据之前,先用一些测试数据来做这件事。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39414579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档