mysql交換兩行或兩列的值
參考:
一、交換兩列的值(列名不變)
新建資料庫和表,並插入資料
CREATE DATABASE test;
USE test;
CREATE TABLE `product` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
COMMENT '產品id',
`name` VARCHAR(50) NOT NULL
COMMENT '產品名稱',
`original_price` DECIMAL(5, 2) UNSIGNED NOT NULL
COMMENT '原價',
`price` DECIMAL(5, 2) UNSIGNED NOT NULL
COMMENT '現價',
PRIMARY KEY (`id`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
INSERT INTO `product` (`id`, `name`, `original_price`, `price`) VALUES
(NULL, '雪糕', '5', '3.5'),
(NULL, '鮮花', '18', '15'),
(NULL, '甜點', '25', '12.5'),
(NULL, '玩具', '55', '45'),
(NULL, '錢包', '285', '195');
查詢:
SELECT *
FROM product;
按別名查詢:
#
SELECT *
FROM product AS a, product AS b
WHERE a.id = b.id;
交換兩列的值(列名不變):
# 交換mysql的兩列的值(列名不變)
UPDATE product AS a, product AS b
SET a.original_price = b.price, a.price = b.original_price
WHERE a.id = b.id;
再次查詢:
SELECT *
FROM product;
可看到已改變。
二、交換兩行的值(id不變)
新建資料庫和表,並插入資料
CREATE DATABASE test;
USE test;
CREATE TABLE `rules` (
`rule_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`rule_name` VARCHAR(255) NOT NULL,
`priority` INT(11) DEFAULT NULL,
PRIMARY KEY (`rule_id`)
);
INSERT INTO rules
(rule_id, rule_name, priority)
VALUES
(1, 'Take one bread', 10),
(2, 'Drink water', 20),
(3, 'Eat candy', 30),
(4, 'Wash hand', 40),
(5, 'Give charity', 50);
查詢:
SELECT * FROM rules;
按照別名和id查詢:
SELECT *
FROM
rules AS rule1
JOIN rules AS rule2 ON
(rule1.rule_id = 1 AND rule2.rule_id = 4)
OR (rule1.rule_id = 4 AND rule2.rule_id = 1);
交換兩行的值(除了id)
UPDATE
rules AS rule1
JOIN rules AS rule2 ON
(rule1.rule_id = 1 AND rule2.rule_id = 4)
OR (rule1.rule_id = 4 AND rule2.rule_id = 1)
SET
rule1.priority = rule2.priority,
rule2.priority = rule1.priority,
rule1.rule_name = rule2.rule_name,
rule2.rule_name = rule1.rule_name;
再次查詢:
SELECT * FROM rules;
可看到兩行已完成了交換。
相關文章
- 異或交換兩個數的值
- Swift交換兩個變數的值Swift變數
- 【C語言】給定兩個整型變數的值,將兩個值的內容進行交換C語言變數
- Python面試技巧-交換兩個元素的值Python面試
- 異或運算的巧用 → 不用額外的變數,如何交換兩個變數的值?變數
- 交換兩個變數變數
- 不使用臨時變數交換兩個變數的值變數
- 【Python有坑系列】交換兩個陣列的切片,有坑Python陣列
- leetcode 24 兩兩交換連結串列中的節點LeetCode
- 交換兩個整型變數變數
- JavaScript實現兩個數的交換JavaScript
- C語言交換兩個變數的值的5種基本方法C語言變數
- leetcode 24.兩兩交換連結串列中的節點LeetCode
- 24. 兩兩交換連結串列中的節點 (中等)
- LeetCode 24. 兩兩交換連結串列中的節點LeetCode
- 如何不使用臨時變數,交換兩個變數的值。變數
- 交換兩個資料的三種方法
- C++ 一種交換兩個數的思路C++
- 10.13 每日一題 24. 兩兩交換連結串列中的節點每日一題
- 呼叫函式實現兩個數交換函式
- 面試題-JavaScript交換兩個變數的方法面試題JavaScript變數
- 【LeetCode連結串列#9】圖解:兩兩交換連結串列節點LeetCode圖解
- C++取反交換兩個數的值C++
- vue兩個元件間值的傳遞或修改方式Vue元件
- 空間或平面判斷兩線段相交(求交點)
- c語言 - 交換兩個變數(不建立臨時變數)兩種方法C語言變數
- 尋找陣列中和為定值的兩個數陣列
- JS 兩組陣列取不同值組成新陣列的方法JS陣列
- Linux awk中輸出上下兩列值之間的差值Linux
- 數倉的兩種輕量級資料交換格式:json與jsonbJSON
- 保障兩種不同的軟體在交換資料時可以互相相容
- 計算兩條直線的交點
- Spark SQL中列轉行(UNPIVOT)的兩種方法SparkSQL
- Java交換map的key和value值Java
- Python常用的四種數值交換方式!Python
- 數值變數交換常用方法變數
- 變更性別--使用if 交換值
- mysql中數值型資料有哪兩個類別?MySql