我重構了一些代碼,這是一個PHP-MYSQL項目。所以我試圖在單個查詢中更新一些表,或者至少兩個。使用大小寫和子查詢更新多個表MySql
這是可能實現不加入?什麼是最好的選擇?
UPDATE document D SET D.status = 2,
CASE
WHEN D.type 'A' THEN (UPDATE table_1 SET active = 1 WHERE id_table1 = D.id_document)
WHEN D.type 'B' THEN (UPDATE table_2 SET active = 1 WHERE id_table2 = D.id_document)
WHEN D.type 'C' THEN (UPDATE table_3 SET active = 1 WHERE id_table3 = D.id_document)
END
WHERE D.id_document = %s
我不介意到第一臺「文件d」分開,但我需要「情況下,當」更新單個查詢多個表,因爲它們就像11個表。
這舊的代碼有這麼多的「mysqli_query()」調用,就像32只是簡單的重複更新。只是想減少線路的數量。此外,我使用簡單的SQL快速複製/粘貼來做測試。 我可以把表放在一個數組中並構建並執行。我試圖避免建立與PHP的SQL –
對不起,有沒有辦法做到這一點與MySQL中的一個查詢。到目前爲止,最乾淨的代碼解決方案是從變量中傳遞表名。更好的辦法是糾正糟糕的數據庫模式設計,並使所有這些表成爲一張表,這樣一次簡單的更新就可以完成這項工作。但既然你說這是舊代碼,在這種情況下很可能是不切實際的。 –
它可能存在「選擇更新」?更多更多的子查詢?不需要在一個查詢中。其他表格「table1,table2」等等,真的不同,不能合併。就像一個用於收款,其他用於付款,其他用於發票等,只在他們之間共享一個列名。 –