update mysql left outer join忽略数据并只写入一个特定值

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

我试图通过左外连接使用小表中的信息更新大表,这是用相同的值填充所有目标单元格,而不考虑小表中的值

如何将小表中的特定值正确写入大表中

下面是SQL:

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-这是什么?