2013-10-12 39 views
0

2_1_journalmysql INNER JOIN與WHERE。需要了解的代碼確實

TransactionPartnerName 
----------------------- 
name 1 
name 2 
name 3 

2_1_transactionpartners

CompanyName | PreviousCompanyName 
------------------------------------ 
name 1  | 
name 2  | 
name 3  | name 2 

例如想改變name 1name 11

首先,在表2_1_transactionpartnersCompanyName複製name 1和表2_1_journal變化name 1粘貼PreviousCompanyName

接下來需要name 11。我認爲:將TransactionPartnerName更改爲CompanyName,其中TransactionPartnerName等於PreviousCompanyName。但我不想在表2_1_journal更改name 2name 3,因爲想要(給命令)只將name 1更改爲name 11

這是我的代碼。沒有發現錯誤。但要確保什麼代碼所做的

UPDATE 2_1_journal 
INNER JOIN 2_1_transactionpartners ON (2_1_journal.TransactionPartnerName = 2_1_transactionpartners.PreviousCompanyName) 
SET 2_1_journal.TransactionPartnerName = 2_1_transactionpartners.CompanyName 
WHERE 2_1_transactionpartners.CompanyName = ? 

? = name 11

由於理解的代碼更新2_1_journal和複製CompanyNameTransactionPartnerName如果CompanyName等於name 11TransactionPartnerName等於PreviousCompanyName

我是正確?可能有更好的方法來達到目的嗎?

回答

1
UPDATE IGNORE 2_1_transactionpartners, 2_1_journal 
SET 2_1_journal.TransactionPartnerName = 2_1_transactionpartners.CompanyName 
WHERE 2_1_journal.TransactionPartnerName = 
2_1_transactionpartners.PreviousCompanyName 
AND 2_1_transactionpartners.CompanyName = ? 
+0

此代碼是否更快(執行更快)?在某處我更好地使用'INNER JOIN'來閱讀 – user2465936