如何使用mysql顺序更新数据库

时间:2016-08-01 07:47:11

标签: php mysql

我有一个很长的数据库列表,我希望按名称组更新字段。我想将前30个更新为值' 1'下一个30来重视' 2'等等到最后

关于如何去做的任何想法

$sql = mysqli_query($conn,
   "UPDATE `tablename` SET `group` = '$value' WHERE id IN (SELECT id FROM tablename ORDER BY id desc LIMIT 0, 30)");

2 个答案:

答案 0 :(得分:3)

您遇到了mysql

的限制
  

您无法更新表格并从中选择同一个表格   子查询。

您可以使用更新联接,但由于涉及限制,您将再次遇到同样的问题。由于只涉及少量记录,因此您可以进行简单的查询以获取ID。

SELECT GROUP_CONCAT(id) FROM tablename ORDER BY id desc LIMIT 0, 30

然后在下一个查询中使用它

UPDATE `tablename` SET `group` = '$value' WHERE id IN (ids_from_above_query)

如果您担心并发更新,请启动交易。

答案 1 :(得分:2)

如果您的更新是一次性的(并且不需要对其进行优化,例如在一个查询中完成所有操作),您只需重复以下查询,直至完成:

update `tablename` 
SET `group` = '$value' 
where `group` is null
order by id desc
limit 30;

所有组值必须为空(或其他一些未使用的值),例如,首先使用update tablename SET group = null,如果他们不是。

您可能希望在交易中完成所有操作。