我正在尝试将值从一个库存表更新到另一个库存表。但是,某些值被复制为 NULL
,因为源表中不存在该库存。我认为 INNER JOIN
只查看两个表之间共享的值。我的 allStocks
表中的股票比 divStocks
多得多,但是 divStocks
中有一些股票在 allStocks
中不存在。我只想将价格从 allStocks
复制到 divStocks
中,而不是用 NULL
覆盖任何价格。
这是我当前的查询:
UPDATE `divStocks` ds INNER JOIN `allStocks` als ON
`ds`.`tickerSymbol` = `als`.`tickerSymbol` SET `ds`.`price` =
`als`.`price`, `ds`.`priceAsOf` = `als`.`priceAsOf`;
最佳答案
我会说最简单的解决方案是向您的查询添加 WHERE
以专门排除在 allStocks
表中没有价格的行。与使用类似 RIGHT JOIN
之类的东西相比,这样做会增加查询的可读性,这是相当罕见的。
UPDATE `divStocks` ds
INNER JOIN `allStocks` als ON `ds`.`tickerSymbol` = `als`.`tickerSymbol`
SET `ds`.`price` = `als`.`price`, `ds`.`priceAsOf` = `als`.`priceAsOf`
WHERE `als`.`price` IS NOT NULL;
关于MySQL - 使用内部连接更新正在创建空值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56470616/