SQL UPDATE语句 - 返回成功但受影响的是0行

时间:2010-12-29 13:12:33

标签: sql mysql

我正在发送一个SQL UPDATE查询,而mySQL数据库表现得很奇怪。它返回一个成功的响应,但会影响0行。代码是:

UPDATE place 
SET city='Qatar' AND country='Qatar'
WHERE placeid='25'

Response: Successful 0 row(s) affected. ( Query took 0.0003 sec )

数据库中有肯定记录,其中placeid ='25'。如果我执行SELECT * FROM place WHERE placeid ='25'我会返回记录。

有什么想法吗? 谢谢!

编辑:

Table structure:

SQL query: describe place; 
Rows: 9

Field         Type     Null   Key    Default  Extra
title         text     NO            NULL     
description   text     NO            NULL     
latitude      float    NO            NULL     
longitude     float    NO            NULL     
image         text     NO            NULL     
placeid       int(11)  NO     PRI    NULL     
country       text     YES           NULL     
city          text     YES           NULL     
address       text     YES           NULL     

3 个答案:

答案 0 :(得分:16)

试试这个:

UPDATE place 
SET city='Qatar', country='Qatar'
WHERE placeid=25

因为 AND 在您的查询中听起来很奇怪。

答案 1 :(得分:2)

我注意到MySQL是“智能”的,并且不会将记录更新为已存在于数据库中的值。当我从Workbench运行更新语句时,我第一次得到响应(从'a'更新为'b'):

  

更新t.t set s ='b',其中k> 0 | 1行受影响的行匹配:1已更改:1警告:0

第二次收到回复(从'b'更新为'b'):

  

更新t.t set s ='b',其中k> 0 | 0行受影响的行匹配:1已更改:0警告:0

幸运行永远不会在事务中被锁定。

答案 2 :(得分:-1)

你确定placeId是varchar但不是数字吗?你试过没有''吗?

UPDATE place  SET city='Qatar' AND country='Qatar' WHERE placeid=25