2013-03-04 25 views
2

我正在查看某人在一個表中提交的內容與數據庫中的另一個表之間是否匹配。 我不知道如何設置它。什麼即時嘗試是匹配2 sql列如果=然後更新一個不同的列1

IF tableA column A = tableB column B then table A column C = Column C + 1. 

我試過更新的方法,但似乎不適合我。任何幫助都會很棒。謝謝。

+0

RTLM什麼? http://dev.mysql.com/doc/refman/5.0/en/update.html – 2013-03-04 16:58:26

+0

左連接?內部聯接?這是否是psuedocode?你的查詢是什麼?結果如何?預期成績? – Hituptony 2013-03-04 16:59:13

回答

3

一般會是這樣:

UPDATE TABLE_A a JOIN TABLE_B b 
    ON a.join_col = b.join_col AND a.column_a = b.column_b 
SET a.column_c = a.column_c + 1 

join_col價值可能user_ID的,所以你只在TABLE_A有關該更新的行同一用戶TABLE_B中具有相同的值。

+0

感謝您提交此。現在回來運行它。讓你知道它是怎麼回事 – Ricky 2013-03-04 17:08:25

+0

你可能需要調整它以將column_c的值加1,除非column_c已經是整數。有時類型轉換可能很複雜。 – 2013-03-04 17:10:01

+0

如果我還有第三張桌子,如果這仍然可以工作,我很好奇。我正在閱讀在UPDATE中使用3個表連接並不起作用?我想要的是UPDATE tablec JOIN tablea JOIN tableb – Ricky 2013-03-04 19:14:02

1

我想你可以在mysql中做到這一點:

UPDATE TableA a, TableB b 
SET a.ColumnC = ColumnC + 1 
WHERE a.ColumnA = b.ColumnB; 
+0

這會更新TableA中的所有行,其中a.ColumnA = b.ColumnB - 即使它們來自不同的用戶。在這種情況下,如果*任何*用戶的ColumnB等於該用戶的ColumnA,它將更新TableA - 我相信OP只想爲該特定用戶更新ColumnC。 – 2013-03-04 17:04:52

+0

這段代碼是爲了顯示語法而呈現的僞代碼的轉換,@Ricky可以根據需要更改它。 – Bulat 2013-03-04 17:07:39

0

,如果這是你想要

update tableA set colA=(select (case when b.colB=colA then colC+1 else colC end) from tableB b) 
+0

不,這不會工作的原因很多。即使它沒有錯誤地執行,它也會更新錯誤的列。 – andr 2013-03-04 17:24:00

相關問題