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、多多學習,多多總結。







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章