2017-05-18 25 views
1

多個表/行/列單查詢更新更新不止一個mysqli的查詢一次

我想短了我的代碼,因爲我有幾個用戶和我的服務器掛了,當有很多用戶。也讓我知道,如果節省的時間,如果我使用它們在單個查詢,或者如果其優良的使用多個查詢的話,我很高興與它

這是我的稅表

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"; 

回答

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); 

我會建議獨立更新每個查詢。

+0

我會試一試 – Thepak

+0

這對一張桌子很合適。如果我只更新** tax1 ** – Thepak

+0

@thepak。 。 。我錯過了那些你正在更新的不同列。我確定了答案。 –