2013-04-11 85 views
-1

即時通訊嘗試使用多更新統計信息更新mysql表。
我試過我做多選的方式,但它給錯誤。
用多語句更新多記錄單個mysql表嗎?

UPDATE (
    UPDATE resources SET resources.resourcecount = resources.resourcecount - '100' 
    WHERE resourcetype = '1' 
    ), 
    (
     UPDATE resources SET resources.resourcecount = resources.resourcecount - '250' 
    WHERE resourcetype = '2' 
    ), 
    (
     UPDATE resources SET resources.resourcecount = resources.resourcecount - '300' 
    WHERE resourcetype = '3' 
    ), 
     (
     UPDATE resources SET resources.resourcecount = resources.resourcecount - '600' 
    WHERE resourcetype = '4' 
    ) 

我不知道,如果它有可能通過查詢本身或者我應該使用PHP循環做到這一點?

+0

什麼是你想怎麼辦?只需按照[UPDATE語法](http://dev.mysql.com/doc/refman/5.6/en/update.html),它就可以工作。 – Jocelyn 2013-04-11 02:08:23

+0

*嵌套更新* ??正如@Jocelyn提到的那樣,在你決定使用你的代碼之前,你看過你正在使用的更新類型嗎? – bonCodigo 2013-04-11 08:55:27

回答

1

如果你只是減去100時resourcetype是1,2,3或4,你可以這樣做:

UPDATE resources 
    SET resources.resourcecount = resources.resourcecount - 100 
    WHERE resourcetype IN ('1', '2', '3', '4') 
+1

如果'resourcetype'是一個'char',不要使用'BETWEEN'。字符串'12'介於'1'和'2'之間。 – Barmar 2013-04-11 02:13:47

+0

@ Dr.Neo - 請參閱上面的Barmar的評論以及最新的答案。爲此,使用'IN'而不是'BETWEEN'。 – 2013-04-11 02:21:12

+0

@Barmar - 我剛剛發表了一條評論,感謝你,但我現在沒有看到它。所以謝謝!我知道比那真的更好:) – 2013-04-11 02:21:59

0
$updateSql = "UPDATE resources SET resources.resourcecount = resources.resourcecount - '100' 
    WHERE resourcetype = '1';"; 

$updateSql .= "UPDATE resources SET resources.resourcecount = resources.resourcecount - '100' 
    WHERE resourcetype = '2';"; 

mysqli_multi_query($link,$updateSql); 
+0

在查詢之間需要分號。 – Barmar 2013-04-11 02:11:49

+0

我確實把分號,我只是連接其他查詢以及。它應該工作 – Marc 2013-04-11 02:18:16

+0

我的意思是你需要在字符串內部的查詢之間使用分號,而不是在PHP語句之間使用分號:'$ updateSQL。=「; UPDATE ...」'。 – Barmar 2013-04-11 02:24:27