mysql – 根据使用SQL更改单个记录对多个记录进行更改
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 根据使用SQL更改单个记录对多个记录进行更改,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2245字,纯文字阅读大概需要4分钟。
内容图文
我有一张食物.它们有一个“位置”字段,表示它们应该出现在列表中的顺序(listID是它们所在的列表,我们不想在另一个列表上重新排序项目).
+--id--+--listID--+---name---+--position--+
| 1 | 1 | cheese | 0 |
| 2 | 1 | chips | 1 |
| 3 | 1 | bacon | 2 |
| 4 | 1 | apples | 3 |
| 5 | 1 | pears | 4 |
| 6 | 1 | pie | 5 |
| 7 | 2 | carrots | 0 |
| 8,9+ | 3,4+ | ... | ... |
+------+----------+----------+------------+
我希望能够说“将梨移到芯片之前”,其中包括将梨的位置设置为位置1,然后将中间的所有位置递增1.这样我生成的表看起来像这样……
+--id--+--listID--+---name---+--position--+
| 1 | 1 | cheese | 0 |
| 2 | 1 | chips | 2 |
| 3 | 1 | bacon | 3 |
| 4 | 1 | apples | 4 |
| 5 | 1 | pears | 1 |
| 6 | 1 | pie | 5 |
| 7 | 2 | carrots | 0 |
| 8,9+ | 3,4+ | ... | ... |
+------+----------+----------+------------+
所以我需要做的就是SELECT name FROM mytable WHERE listID = 1 ORDER BY position我将以正确的顺序获得所有食物.
是否可以使用单个查询执行此操作?请记住,记录可能在列表中向上或向下移动,并且该表包含多个列表的记录,因此我们需要隔离listID.
我对SQL的了解非常有限,所以现在我知道这样做的唯一方法是SELECT id,position FROM mytable WHERE listID = 1 AND position BETWEEN 1 AND 5然后我可以使用Javascript(node.js)来改变位置5到1,并递增所有其他1.然后更新我刚刚更改的所有记录.
只是在我尝试阅读SQL的时候,每个人都在说避免多次查询,避免做同步编码等事情.
谢谢
解决方法:
这需要一个更新许多记录的复杂查询.但是对数据进行一些小改动可以改变一些事情,这样就可以通过一个只修改一条记录的简单查询来实现.
UPDATE my_table set position = position*10;
在过去,许多系统上的BASIC编程语言都有行号,它鼓励了spagetti代码.很多人写了GOTO line_number而不是函数.如果您按顺序对行进行编号并且必须添加或删除几行,则会出现真正的问题.人们是如何绕过它的?按增量线增加10!这就是我们在这里所做的.
那么你想要梨是第二项吗?
UPDATE my_table set position = 15 WHERE listId=1 AND name = 'Pears'
担心多次重新排序后,项目之间的间隙最终会消失吗?不要害怕
UPDATE my_table set position = position*10;
时.
内容总结
以上是互联网集市为您收集整理的mysql – 根据使用SQL更改单个记录对多个记录进行更改全部内容,希望文章能够帮你解决mysql – 根据使用SQL更改单个记录对多个记录进行更改所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。