首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MySQL中,如何更新现有行的某些列并从引用表中插入新行?

在MySQL中,如何更新现有行的某些列并从引用表中插入新行?
EN

Stack Overflow用户
提问于 2012-07-18 17:12:46
回答 1查看 2K关注 0票数 0

下面将从我想要插入到或更新现有元组的引用表t2中获取t1中的值

代码语言:javascript
运行
复制
SELECT 
  id, col1 
FROM 
  t2
LEFT OUTER JOIN 
  t1
ON 
  t2.id=t1.id

如果id的元组已经存在于t1中,那么应该用从t2中选择的值来更新它。如果id的元组不存在于t1中,则应插入(id, col1),并将其他列设置为默认值。

如何有效地做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2012-07-18 17:18:28

使用这两个querys:

这将加入和筛选,给出两个表中存在的值,所以只需进行更新。

代码语言:javascript
运行
复制
    Update t1 set t1.col1 = t2.col1
from t1 inner join t2 on t1.id = t2.id

这将加入和筛选,给出t2中的值,而不是t1中的值,所以只需进行插入。

代码语言:javascript
运行
复制
    insert into t1 select t2.id, t2.col1 
from t2 left outer join t1 on t2.id = t1.id where t1.id IS NULL

更新:

正如我从here看到的那样,MySQL为此使用了另一种新税。因此,您可以使用这个查询,而不是上面的查询:

代码语言:javascript
运行
复制
UPDATE t1 temp1
INNER JOIN t2 temp2
ON temp1.id= temp2.id 
SET temp1.col1= temp2.col1

但是概念是相同的(只是一个不同的语法),您不需要Where,因为内部联接只使用匹配/联接的字段。

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

https://stackoverflow.com/questions/11546785

复制
相关文章

相似问题

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