更新 mysql 表。一个字段 = old_value - 1
我需要做的是: - 从表 formfields
中删除一项 - 使用排序更新每个字段> (删除字段的排序) - 将更新字段的排序设置为当前值减 1(例如,如果字段的当前排序为 8,则应将其设置为 7)。
这可以在一个查询中实现吗?或者我怎样才能让它发生?
What I need to do is:
- Delete one entry from table formfields
- Update EVERY field with ordering > (ordering of the deleted field)
- Set the ordering of the updated fields to the current value minus 1 (e.g. if current ordering on the field is 8, then it should be set to 7).
Is that possible in one query? Or how can I make it happen?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以设置一个交易来一次性完成这一切。
给出下表:
您可以执行如下操作:
You can set up a transaction to do this all at once.
Given the following table:
You can do something like the following:
显然你不能在同一个查询中执行
DELETE
和UPDATE
,但是你可以使用InnoDB,启动一个事务,运行删除查询,然后使用更新查询例如......在提交交易之前。
使用 MyISAM 表连续执行两个查询十有八九会起作用(取决于负载等),但您确实不应该这样做。
You obviously can't do the
DELETE
and theUPDATE
in the same query, but you could use InnoDB, start a transaction, run the delete query and then use an update query such as......prior to committing the transaction.
Doing the two queries back to back using a MyISAM table will work nine times out of ten (depending on load, etc.), but you really shouldn't go there.