我尝试通过 LEFT OUTER JOIN 使用小表中的信息更新大表,用相同的值填充所有目标单元格 - 无论小表中的值如何。
如何将小表中的特定值正确写入大表中?
这是 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 中的所有行当前都已将 good 写入了parameter1,但从中获取 tablebig.parameter1 值的 tablesmallparameter1 值并不全部都具有 good 在参数 1 中。
如何将特定的 tablesmall.parameter1 值准确写入 tablebig.parameter1?
谢谢!
最佳答案
问题出在您的 ON
条件上:
ON tablebig.id AND tablesmall.id
只要 tablebig.id 和 tablesmall.id 都非零(始终如此),就会出现这种情况。你应该拥有的是:
ON tablebig.id = tablesmall.id
也在你的SET中(我认为这是一个错字)它应该是
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
关于mysql - 更新mysql左外连接忽略数据并只写入一个特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49915419/