2013-06-27 44 views
0

我試圖在IF表中使用IF語句執行多個更新,其中IF語句的條件與我正在更新的表不同。例如,我正在使用table2中的檢查更新表1。跨多個表的MySQL IF語句

MySQL返回一個錯誤,說它無法找到'table2.col1'。這兩個表和列的存在,所以我不知道爲什麼我收到這個錯誤..

cursor = database.cursor() 
cursor.execute("""UPDATE table1 SET col1 = IF(table2.col1= 2, 3 , table1.col1), 
            col2 = IF(table2.col1= 2 ,%s , table1.col2), 
            col3 = IF(table2.col1= 2 , %s , table1.col3), 
            col4 = IF(table2.col1= 2 , %s , table1.col4)     
WHERE id =%s""", (val2, val3, val4, id)) 
database.commit() 

錯誤:

_mysql_exceptions.OperationalError: (1054, "Unknown column 'table2.col1' in 'field list'") 
+0

可能有些引號丟失,'table2'.col1 = 2' –

+0

您需要加入您的其他表格。 – Vatev

回答

0

你需要加入表2。嘗試這個

UPDATE table1 INNER join table2 
    ON .... 
    SET col1 = IF..... 
+0

非常感謝! – Jim