第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如果 1 大于其他,sql 查詢交換列

如果 1 大于其他,sql 查詢交換列

PHP
海綿寶寶撒 2023-04-28 14:36:35
如果第 1 列的數(shù)字大于第 2 列的數(shù)字,我有 2 列,其中有一個(gè)數(shù)字我想交換這兩列之間的值。有沒有一種簡(jiǎn)單的方法可以通過查詢來(lái)做到這一點(diǎn)?開始:id | column 1 | column 2------------------------1   50         32   51         4結(jié)束:id | column 1 | column 2------------------------1   3          502   4          51
查看完整描述

3 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

你不能只是交換價(jià)值。您需要臨時(shí)變量第一種方式:

 UPDATE table_name SET column1=column2, column2=@temp WHERE (@temp:=column1) > column2;

第二種方式:這種方式更好,因?yàn)樗鼨z查任何值是否為 NULL

UPDATE table_name SET column1=(@temp:=column1), column1= column2, column2 = @temp WHERE column1 > column2;

第二種方式很簡(jiǎn)單。它比較兩個(gè)列并在需要時(shí)交換這個(gè)列。


查看完整回答
反對(duì) 回復(fù) 2023-04-28
?
慕標(biāo)琳琳

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊

在UPDATE語(yǔ)句中,MySql 在使用更新列的值時(shí)使用非標(biāo)準(zhǔn) SQL 行為,因?yàn)樵谶@樣的語(yǔ)句中:


SET a = x, b = a

a賦值中的值b = a不會(huì)是表中存儲(chǔ)的原始值,而是a賦值后的值a = x。

所以這:


update tablename

set column1 = column2,

? ? column2 = column1

在其他數(shù)據(jù)庫(kù)中可以使用的方法在 MySql 中不起作用。


有一個(gè)不使用變量或不必要的連接的解決方法:


update tablename

set column1 = column1 + column2,

? ? column2 = column1 - column2,

? ? column1 = column1 - column2

where column1 > column2;

從以下開始工作:


單表 UPDATE 分配通常從左到右評(píng)估。

結(jié)果:

| id? | column1 | column2 |

| --- | ------- | ------- |

| 1? ?| 3? ? ? ?| 50? ? ? |

| 2? ?| 4? ? ? ?| 51? ? ? |


查看完整回答
反對(duì) 回復(fù) 2023-04-28
?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

您在表上有一個(gè)主鍵,所以一個(gè)簡(jiǎn)單的選擇是join:


update t join

? ? ? ?t t2

? ? ? ?on t.id = t2.id

? ? set t.x = t2.y,?

? ? ? ? t.y = t2.x

? ? where t.x > t.y;

這是一個(gè) db<>fiddle。


出于以下幾個(gè)原因,我更喜歡這種方法而不是使用變量:


這不取決于子句的評(píng)估順序set,我認(rèn)為 MySQL 不能保證這一點(diǎn)。

我認(rèn)為在 MySQL 8+ 中不推薦使用這種變量

它不依賴于表達(dá)式的順序,因此更健壯并且更容易適應(yīng)更復(fù)雜的表達(dá)式。


查看完整回答
反對(duì) 回復(fù) 2023-04-28
  • 3 回答
  • 0 關(guān)注
  • 167 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)