一次更新多个mysqli查询

时间:2017-05-18 11:02:55

标签: php mysql sql

单个查询中的多个表/行/列更新

我想简化我的代码,因为我的用户很少,而且当有很多用户时我的服务器挂断了。如果我在单个查询中使用它们,或者如果它可以使用多个查询,那么让我知道它是否节省了时间,那么我很满意它

这是我的税表

id | time       | tax1 | tax2 | tax3
1  | 1469856318 | 1    | 2    | 6 
2  | 1469856318 | 5    | 1    | 1 
3  | 1469856318 | 6    | 8    | 5 
4  | 1469856318 | 2    | 7    | 7 
5  | 1469856318 | 1    | 1    | 2 

我正在使用这些步骤,但有时会有很多行和列。

$u0 = "UPDATE tax SET time='$ms', tax1='$tax1' WHERE id = 1";
$u1 = "UPDATE tax SET time='$ms', tax2='$tax2' WHERE id = 2";
$u2 = "UPDATE tax SET time='$ms', tax3='$tax3' WHERE id = 3";

我很想知道是否可以在一个查询中执行此操作

另一件事

如果可以在单个查询中更新两个不同的表

$u0 = "UPDATE tax SET time='$ms', tax1='$tax1' WHERE id = 1";
$u1 = "UPDATE tax SET time='$ms', tax2='$tax2' WHERE id = 2";
$u2 = "UPDATE tax SET time='$ms', tax3='$tax3' WHERE id = 3";
$u4 = "UPDATE tax1 SET tax2='$tax2' WHERE id = 5";

1 个答案:

答案 0 :(得分:0)

您可以使用条件逻辑来更新单个表:

UPDATE tax
    SET time = '$ms',
        tax1 = (CASE WHEN id = 1 THEN '$tax1' ELSE tax1 END),
        tax2 = (CASE WHEN id = 2 THEN '$tax2' ELSE tax2 END),
        tax3 = (CASE WHEN id = 3 THEN '$tax3' ELSE tax3 END)
    WHERE id IN (1, 2, 3);

我建议您单独更新每个查询。