update mysql left outer join忽略数据并只写入一个特定值
我试图通过左外连接使用小表中的信息更新大表,这是用相同的值填充所有目标单元格,而不考虑小表中的值 如何将小表中的特定值正确写入大表中 下面是SQL:update mysql left outer join忽略数据并只写入一个特定值,mysql,left-join,Mysql,Left Join,我试图通过左外连接使用小表中的信息更新大表,这是用相同的值填充所有目标单元格,而不考虑小表中的值 如何将小表中的特定值正确写入大表中 下面是SQL: UPDATE tablebig LEFT OUTER JOIN tablesmall ON tablebig.id AND tablesmall.id SET tablebig.parameter1 = Sheet1.parameter1; 以下是表格: tablebig ======== id|email |name |p
UPDATE tablebig
LEFT OUTER JOIN tablesmall
ON tablebig.id AND tablesmall.id
SET tablebig.parameter1 = Sheet1.parameter1;
以下是表格:
tablebig
========
id|email |name |parameter1|
-------------------------------------
1 |joe@joe.com |joe |
2 |jane@jane.com |jane |
3 |sam@sam.com |sam |
tablesmall
==========
id|email |parameter1|
-------------------------------------
1 |joe@joe.com |good |
2 |jane@jane.com |good |
3 |sam@sam.com |bad |
输出:
tablebig中的所有行当前都有写入参数1的good,尽管tablebig.parameter1值来自的tablesmall参数1值在参数1中并不都有good
如何将特定的tablesmall.parameter1值准确写入tablebig.parameter1
谢谢 问题在于您的
处于
状态:
ON tablebig.id AND tablesmall.id
每当tablebig.id和tablesmall.id均为非零时(始终为非零),就会出现这种情况。你应该做的是:
ON tablebig.id = tablesmall.id
同样在你的作品中(我想这是一个打字错误),应该是这样的
SET tablebig.parameter1 = tablesmall.parameter1;
因此,您的查询应该是:
UPDATE tablebig
JOIN tablesmall
ON tablebig.id = tablesmall.id
SET tablebig.parameter1 = tablesmall.parameter1;
SELECT * FROM tablebig
这将产生以下结果:
id email name parameter1
1 joe@joe.com joe good
2 jane@jane.com jane good
3 sam@sam.com sam bad
表1.参数1-这是什么?