2016-02-21 30 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