如何比较主键两个表,这是五列的组合?

时间:2011-08-08 21:40:31

标签: mysql

我有两个表,我想从另一个表更新一个表。为两者定义的主键是我添加的五列的组合,如下所示

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

3 个答案:

答案 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, ... )