很抱歉,如果标题有点令人困惑......我正在尝试修复一些数据。以下是解释:
说我有两张桌子。
我们的想法是将Product表中的所有PID值转换为产品名称。这是我用来帮助说明它的图片:
查找表要大得多,这只是一个例子。所以我猜它会是一个更新语句,如果发现ProductLate在ProductsLookup.PID集中,它将使用ProductsLookup.Name值?这看起来怎么样?
非常感谢你的帮助, 卡洛斯
答案 0 :(得分:0)
您可以使用update
和join
:
update p
set product = pl.name
from products p join
productslookup pl
on pl.pid = p.id;
不需要left join
,因为您只需要更新查找表中匹配的值。
我会提醒您,性能可能是一个问题。问题是两个表之间的类型 - 大概pid
是一个不是字符串的数字。如果是这样,您可以创建一个计算列来更改该列的类型和索引。
答案 1 :(得分:0)
您需要在PID和Product列上将这些表“ProductsLookup”和“Products”放在内部联接中。但是“Products”表中的Product列是varchar,因此您必须在此列上应用ISNUMERIC函数以确保连接正常工作。以下是示例
UPDATE
P
SET
P.Product=PL.Name
FROM
Products P
INNER JOIN ProductsLookup PL ON PL.PID=CASE WHEN ISNUMERIC(P.Product)=1 THEN P.Product ELSE -1 END