首页 > 编程 > Java > 正文

Java大牛养成记——一条SQL语句更新同一张表中的两条数据

2019-11-08 02:10:01
字体:
来源:转载
供稿:网友

背景:项目中的需求是这样的:一堆图片中只有一张图片的状态是“启用”的,其他图片的状态是“未启用”。点击某张图片下面的启用按钮,这张图片的状态为“启用”,同时其他图片的状态修改为“未启用”。想象一下这个过程是很简单的,但是理想是丰满的,现实是骨感的,下面介绍一下详细的过程。

一、问题

   

      背景中说过了,现在就不多赘述了。

二、解决方案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 pic4SET pic3.status= 1, pic4.status = 0WHERE	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、多多学习,多多总结。


上一篇:Java面试题集

下一篇:Java常见异常笔记

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表