我有两个表,我想从另一个表更新一个表。为两者定义的主键是我添加的五列的组合,如下所示
alter table custompricingnew
add primary key (partNumberSKU(100), customerClass(100), customerName(100), svcType(100), svcDuration(100), durationPeriod(100))
如何编写更新语句的where子句?我是否需要单独指定这五列?
UPDATE customPricingTest t1, customPricingTesttemp t2
SET t1.customerId= t2.customerId, t1.customerNumber= t2.customerNumber, t1.custPartNumber=t2.custPartNumber
WHERE t1.primaryKey = t2.primaryKey
Nitesh
答案 0 :(得分:2)
您还可以使用USING
语法的联接:
UPDATE customPricingTest t1 INNER JOIN customPricingTesttemp t2
USING (partNumberSKU, customerClass, customerName, svcType, svcDuration, durationPeriod)
SET t1.customerId = t2.customerId,
t1.customerNumber = t2.customerNumber,
t1.custPartNumber = t2.custPartNumber;
这是一种快捷语法,它假定两个表中的列都存在相同的名称,并且您的连接应该对所有这些列使用相等比较。
另请注意,括号是必需的。
另请参阅:JOIN
syntax
答案 1 :(得分:1)
是的!您需要在5列上指定连接。
答案 2 :(得分:0)
实际上,这些是6列,而不是5列。
您必须加入6列,如下所示:
WHERE t1.partNumberSKU = t2.partNumberSKU
AND t1.customerClass - t2.customerClass
...
或者像这样:
WHERE ( t1.partNumberSKU, t1.customerClass, ... )
= ( t2.partNumberSKU, t2.customerClass, ... )