救救孩子吧,两条记录之间主键交换值报错

菜鸟程序员chen 2019-06-18 04:48:24
我的想法是交换的时候先给他加上一个很大的值,然后再执行一次语句减了这个值,不过就是感觉不太好,蠢到爆炸
还有其他想法吗,救救孩子吧
...全文
2205 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr_ChenBei 2019-06-21
  • 打赏
  • 举报
回复
你自己在做什么 你自己清楚吗? 连个图都没有怎么搞?
LuckyWW123 2019-06-20
  • 打赏
  • 举报
回复
主键是不能重复的,update 的时候交换数据的一条主键必然与另一条主键重复,新加一个排序字段吧
  • 打赏
  • 举报
回复
不考虑性能和代码复杂度,想要主键值互换,建议使用临时变量。详情参考两个杯子液体互换的实现思路。不过劝楼主排序最好单独开辟字段,依照主键进行排序,实用性不强。
咸哼酒家 2019-06-19
  • 打赏
  • 举报
回复
意思是原先的代码查询数据库记录使用 主键排序,但是该排序和裆下业务需求冲突,需要重新更改?
更改后的排序要求是什么呢?
咸哼酒家 2019-06-19
  • 打赏
  • 举报
回复
两条记录之间主键交换值,什么是主键交换值?
  • 打赏
  • 举报
回复
自己写吧。。。
qq_41110330 2019-06-19
  • 打赏
  • 举报
回复
主键肯定会有限制,不能直接交换内容么?
dl348 2019-06-19
  • 打赏
  • 举报
回复
一定要写入数据库吗?还是说呈现时排好就行?
你应该是用List去装这些记录吧,直接用list的sort去排好它再写入数据库可以吗?
maradona1984 2019-06-19
  • 打赏
  • 举报
回复
自己写排序的序号这才是最合理的做法 写代码需要合理,不要图简单,不然以后更难以维护
  • 打赏
  • 举报
回复
引用 9 楼 qq_39936465 的回复:
主键肯定会有限制,不能直接交换内容么?
交换的就是内容,不过主键唯一,交换也得有个先后,不管是把谁的值先给另外一个都会报错,
  • 打赏
  • 举报
回复
引用 8 楼 咸哼酒家 的回复:
[/quote] 昨天看到过,一样的错误 Duplicate entry '2315' for key 'PRIMARY'
qq_39936465 2019-06-19
  • 打赏
  • 举报
回复
引用 7 楼 菜鸟程序员chen 的回复:
用的这个方法,现在重新写了一个排序号,不过还是想知道有没有其他方法使主键之间交换,求各位大佬指教


主键肯定会有限制,不能直接交换内容么?
咸哼酒家 2019-06-19
  • 打赏
  • 举报
回复
你的回复帖子下面的推荐 链接就是解决方法,使用update
引用 7 楼 菜鸟程序员chen 的回复:
[quote=引用 6 楼 咸哼酒家 的回复:]
意思是原先的代码查询数据库记录使用 主键排序,但是该排序和裆下业务需求冲突,需要重新更改?
更改后的排序要求是什么呢?


对,原先使用的是主键排序,但是现在要我加上下移功能,实现这个功能不就是交换排序号吗,然后主键之间交换报错了
UPDATE
tbl_core_member c
JOIN
tbl_core_member cc
ON
(c.id = 8 AND cc.id = 11) OR (c.id = 11 AND cc.id = 8)
SET
c.sort = cc.sort , cc.sort = c.sort
原文:https://blog.csdn.net/zzzgd_666/article/details/82703528
用的这个方法,现在重新写了一个排序号,不过还是想知道有没有其他方法使主键之间交换,求各位大佬指教

[/quote]
  • 打赏
  • 举报
回复
引用 6 楼 咸哼酒家 的回复:
意思是原先的代码查询数据库记录使用 主键排序,但是该排序和裆下业务需求冲突,需要重新更改? 更改后的排序要求是什么呢?
对,原先使用的是主键排序,但是现在要我加上下移功能,实现这个功能不就是交换排序号吗,然后主键之间交换报错了 UPDATE tbl_core_member c JOIN tbl_core_member cc ON (c.id = 8 AND cc.id = 11) OR (c.id = 11 AND cc.id = 8) SET c.sort = cc.sort , cc.sort = c.sort 原文:https://blog.csdn.net/zzzgd_666/article/details/82703528 用的这个方法,现在重新写了一个排序号,不过还是想知道有没有其他方法使主键之间交换,求各位大佬指教
  • 打赏
  • 举报
回复
也没看明白你想要做什么啊,报错?报错日志有没有
  • 打赏
  • 举报
回复
哇,没人回复的吗,大哥们
  • 打赏
  • 举报
回复
不行我就自己写个排序号算了,主要是原先别人代码用的这种排序,现在要我加一个上下移

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧