Java大牛养成记——一条SQL语句更新同一张表中的两条数据
背景:项目中的需求是这样的:一堆图片中只有一张图片的状态是“启用”的,其他图片的状态是“未启用”。点击某张图片下面的启用按钮,这张图片的状态为“启用”,同时其他图片的状态修改为“未启用”。想象一下这个过程是很简单的,但是理想是丰满的,现实是骨感的,下面介绍一下详细的过程。
一、问题
背景中说过了,现在就不多赘述了。
二、解决方案1
1、SQL语句:
update picture as pic1,picture as pic2 set pic1.status =0,pic2.status=1 where pic1.id="3" and pic2.id="1"
2、效果:
之前: 之后:
三、解决方案2
解决方案1中传入了两个id,但是理想的解决方案是传入一个id,然后实现相同的功能。于是在某位高人的帮助下完成了第一版,结果运行出错了。然后又在这位高人的帮助下完成了第二版。
第一版:
update picture as pic1,picture as pic2 set pic1.status =0,pic2.status=1 where pic1.id = (select pic3.id from picture as pic3 where pic3.status="1") and pic2.id="1"
---------------------------------------------------我是美丽的分割线----------------------------------------------
第二版:
UPDATE picture AS pic3, picture AS pic4 SET pic3.status= 1, pic4.status = 0 WHERE pic3.id = "1" AND pic4.id = ( SELECT pic2.id FROM ( SELECT pic1.id, pic1.status FROM picture AS pic1 ) pic2 WHERE pic2.status = 1 )
效果:
之前: 之后:
四、学习心得
1、办法总比困难多。
2、绞尽脑汁想不出来的问题,也许别人的指点迷津对你很有帮助。
3、多多学习,多多总结。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Ambari卸载已安装的服务组件
- 下一篇: Ambari 整体架构理解