2016-02-21 31 views
0

的要求是有條件的更新,我會想更新僅當用戶找到行的記錄。研究了WHERE EXISTSIF,並且CASE了很多,但不能想出一個解決方案。的MySQL,SQL UPDATE只有一條記錄被發現

serviceRequest.sql = "SELECT @id:=id FROM user_token WHERE authToken = ?;\ 
    UPDATE user_token SET authToken = ? WHERE id = @id;"; 

serviceRequest.values = [request.query.authToken, "newToken"]; 

回答

2

您只能使用UPDATE。有沒有必要爲一個SELECT

UPDATE user_token 
    SET authToken = ? 
    WHERE authToken = ?; 
+0

我需要一個真或假的結果在我的查詢這是必需的,爲什麼選擇設置。如果找到記錄並且令牌得到更新,則返回'true';如果沒有找到匹配的記錄,則返回'false'。 – user2727195

+1

爲什麼不直接使用'ROW_COUNT()'(http://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_row-count)。這是確定更新行數的典型方法。 –

+0

在節點的MySQL,你的更新查詢的響應持有ROW_COUNT()自動,隨便挑吧 - 戈登說,沒有必要選擇一些@ user2727195 – baao