2011-08-08 12 views
1

私は2つのテーブルを持っており、あるテーブルを別のテーブルから更新したいのです。両方のために定義された主キーは、私は、更新なステートメントのWHERE句の書き方を主キーの2つのテーブルを比較するには、5つの列の組み合わせですか?

alter table custompricingnew 
add primary key (partNumberSKU(100), customerClass(100), customerName(100), svcType(100), svcDuration(100), durationPeriod(100)) 

下回るようaddded 5列の組み合わせですか?これらの5つの列を個別に指定する必要はありますか?

UPDATE customPricingTest t1, customPricingTesttemp t2 
SET t1.customerId= t2.customerId, t1.customerNumber= t2.customerNumber, t1.custPartNumber=t2.custPartNumber 
WHERE t1.primaryKey = t2.primaryKey 

Nitesh

+1

はい。 5つの列すべてに個別に参加する必要があります。 –

+0

そしてプライマリキーには5つではなく6つの列があります。 :-) –

答えて

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

+0

お返事ありがとうございました!! – Nitesh

1

はい! 5列に結合を指定する必要があります。

0

実は、これらは6列ではなく、5

あなたはどちらか、このように6列に参加する必要があります:

WHERE t1.partNumberSKU = t2.partNumberSKU 
    AND t1.customerClass - t2.customerClass 
    ... 

またはこのような:

WHERE (t1.partNumberSKU, t1.customerClass, ...) 
    = (t2.partNumberSKU, t2.customerClass, ...) 
関連する問題