我在使用另一个表中的数据更新一个表的行时遇到一个小问题,请帮忙。
表l
列
Make
Model
OEMNumberLatest
OemNumberPrevious
cStockCode
cDescription
目前,两列cStockCode
,cDescription
为空白,正在等待填充,第二列c
列为StockCode
和{{1} }
问题是如何将表格Description
的内容移动/复制到表格c
的行中?
l
和/或c.StockCode = l.OEMNumberLatest
答案 0 :(得分:1)
您可能不应该将一个表的内容移动到另一个表中。最好只在需要时使用连接获取值:
select l.*, c.cStockCode, c.cDescription
from table1 l join
c
on c.StockCode = l.OEMNumberLatest or c.StockCode = l.OemNumberPrevious;
这似乎是一个奇怪的情况,使用or
,因为你可以得到多个匹配。
无论如何,您可以轻松地将其转换为update
:
update table1 l join
c
on c.StockCode = l.OEMNumberLatest or c.StockCode = l.OemNumberPrevious
set l.cStockCode = c.cStockCode,
l.cDescription = c.cDescription;
如果两个条件都匹配,则可以任意使用update
。
答案 1 :(得分:0)
这是使用另一个表
的更新语法的示例UPDATE tableL SET
tableL.cStockCode=tableC.StockCode,tableL.cDescription=tableC.Description
FROM tableL
JOIN tableC ON
(tableC.StockCode = tableL.OEMNumberLatest)
OR
(tableC.StockCode = tableL.OemNumberPrevious);
我确信tableC
中的内容应填入tableL
,而JOIN
则基于StockCode
OEMNumberLatest
或{{1} }}
答案 2 :(得分:0)
试试这个(在尝试之前保存数据,我不确定你的数据库结构):
UPDATE l
SET l.cStockCode = c.StockCode, l.cDescription = c.Description
FROM l
INNER JOIN c ON (c.StockCode = l.OEMNumberLatest OR c.StockCode = l.OemNumberPrevious)