2012-05-02 51 views
1

喜工作我使用的是UPDATE查询与极限0,1这里我要更新它匹配其即时通讯在查询UPDATE查询未与LIMIT

mysql_query("UPDATE `product_option` SET `input_value`='$color_a',`input_price`='$color_price_a' WHERE `product_id`='$_REQUEST[pid]' and `input_type`='option' LIMIT 0,1"); 

在我的SQL赋予条件的第一行表$ _request [pid]重复很多次,所以在$ _request [pid]匹配的行上,我想更新它的第一行,但这个查询没有做任何事情,数据仍然是相同的,我有添加。

任何建议将理解

这里是表

enter image description here

+0

你是什么意思与*“**第**行匹配...”*?关系表中没有顺序。如果你想使用'LIMIT',你应该提供'ORDER BY'。否则,随机行(符合条件)将被更新。 –

+5

请注意,使用限制进行更新不是复制安全的。换句话说,在一个复制的mysql环境中,该命令有可能在主服务器上更新另一行,而不是在从服务器上进行更新http://dev.mysql.com/doc/refman/5.1/en/replication- features-limit.html – Anigel

+0

这可能有助于http://stackoverflow.com/questions/6289729/mysql-update-query-with-limit – sree

回答

5

的形象应该是LIMIT 1

LIMIT 0,1意味着OFFSET 0 LIMIT 1,但UPDATE不支持偏移。

即使它能工作(它没有)你仍然总是必须提供ORDER子句或它将是一个随机行。

+0

不,他们不是。 –

+0

实际上没有限制0,1正在工作,当我调用表中的数据时,它显示了与条件匹配的多行中的第一行。我不知道更新它的工作与否 –

+0

@HarishKumar看到我编辑的答案;是选择的有效语法,但不适用于更新 –