Mysql中如何實(shí)現(xiàn)兩列的值互換
Mysql中如何實(shí)現(xiàn)兩列的值互換
如圖,因業(yè)務(wù)要求,需要把某兩列的值互換。
1、第一感覺(jué)此sql應(yīng)該能處理問(wèn)題了
UPDATE students SET name = other_name, other_name = name;
結(jié)果是這樣。。。沒(méi)搞定
2、需要一個(gè)地方存要替換的值,不然兩列搞不定
2.1 加第三列?(能解決,但是看起來(lái)呆呆)
-- 新增列 ALTER TABLE students ADD COLUMN swap_col VARCHAR(255); -- 賦值 UPDATE students SET swap_col = other_name; UPDATE students SET other_name = name; UPDATE students SET name = swap_col; -- 刪除列 ALTER TABLE students DROP COLUMN swap_col; --
2.2 上臨時(shí)表(搞點(diǎn)彎路走走)
-- 創(chuàng)建臨時(shí)表 CREATE TEMPORARY TABLE `students_temp` ( `id` int, `name` varchar(255), `other_name` varchar(255), INDEX `idx_id` (`id`), INDEX `idx_name` (`name`), INDEX `idx_other_name` (`other_name`) ); -- 給臨時(shí)表賦值 INSERT INTO students_temp SELECT id, name, other_name FROM students; -- 聯(lián)表更新 UPDATE students AS target INNER JOIN students_temp AS source ON target.id = source.id SET target.name = source.other_name, target.other_name = source.name; -- 刪除臨時(shí)表 DROP TABLE students_temp;
示例sql
DROP table if exists `students`; CREATE TABLE `students` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `other_name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ); INSERT INTO `students` VALUES (1, '張三', '張三1'); INSERT INTO `students` VALUES (2, '李四', '李四1'); INSERT INTO `students` VALUES (3, '王五', '王五1'); INSERT INTO `students` VALUES (4, '趙六', '趙六'); INSERT INTO `students` VALUES (5, '孫七', '孫七'); INSERT INTO `students` VALUES (6, '張三', '張三2'); INSERT INTO `students` VALUES (7, '李四', '李四2'); INSERT INTO `students` VALUES (8, '張三', '張三3');
到此這篇關(guān)于Mysql中如何實(shí)現(xiàn)兩列的值互換的文章就介紹到這了,更多相關(guān)Mysql兩列值互換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql 5.7.10 winx64安裝配置方法圖文教程(win10)
這篇文章主要為大家分享了mysql 5.7.10 winx64安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01MySQL使用MD5加密算法進(jìn)行數(shù)據(jù)加密功能
在現(xiàn)代的數(shù)據(jù)庫(kù)應(yīng)用中,數(shù)據(jù)的安全性和隱私性變得尤為重要,MySQL作為最流行的關(guān)系型數(shù)據(jù)庫(kù)之一,提供了多種加密功能,允許用戶對(duì)數(shù)據(jù)進(jìn)行加密和解密操作,在這篇文章中,我們將深入探討MySQL的加密功能,并重點(diǎn)介紹如何使用MD5加密算法進(jìn)行加密,需要的朋友可以參考下2024-12-12insert和select結(jié)合實(shí)現(xiàn)"插入某字段在數(shù)據(jù)庫(kù)中的最大值+1"的方法
今天小編就為大家分享一篇關(guān)于insert和select結(jié)合實(shí)現(xiàn)"插入某字段在數(shù)據(jù)庫(kù)中的最大值+1"的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03mysql與mysqli的區(qū)別與用法說(shuō)明
mysql是非持繼連接函數(shù)而mysqli是永遠(yuǎn)連接函數(shù)。2010-07-07MySQL主從復(fù)制搭建流程分步實(shí)現(xiàn)
這篇文章主要介紹了MySQL的主從復(fù)制原理詳細(xì)分析,讀寫分離是基于主從復(fù)制來(lái)實(shí)現(xiàn)的。文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-11-11Mysql忘記密碼怎么重置密碼的幾種實(shí)現(xiàn)方法
本文主要介紹了Mysql忘記密碼怎么重置密碼的幾種實(shí)現(xiàn)方法,每種方法都有其適用的情況,根據(jù)具體情況選擇合適的方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10MySQL REVOKE實(shí)現(xiàn)刪除用戶權(quán)限
在 MySQL 中,可以使用 REVOKE 語(yǔ)句刪除某個(gè)用戶的某些權(quán)限,本文就詳細(xì)的來(lái)介紹一下REVOKE 的具體使用方法,感興趣的可以了解一下2021-06-06MySQL中查詢當(dāng)前時(shí)間間隔前1天的數(shù)據(jù)
實(shí)際項(xiàng)目中我們都會(huì)遇到分布式定時(shí)任務(wù)執(zhí)行的情況,今天通過(guò)本文給大家分享MySQL中查詢當(dāng)前時(shí)間間隔前1天的數(shù)據(jù),查詢sql語(yǔ)句給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧<BR>2021-12-12