我重构了一些代码,这是一个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”等等,真的不同,不能合并。就像一个用于收款,其他用于付款,其他用于发票等,只在他们之间共享一个列名。 –