MYSQL-交换表中2行2字段的值

需求场景:

当表中的一个字段存储当前记录的顺序或者排名时候,它需要进行上移或者下移,或者直接和某个记录交换值的时候,通常可以立刻想到以下的SQL操作语句。

CREATE TABLE coordinatePt_Table
(
nID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘ID‘,
nIndex SMALLINT UNSIGNED NOT NULL COMMENT ‘顺序‘,
Longitude DOUBLE COMMENT ‘经度‘,
Latitude DOUBLE COMMENT ‘纬度‘,
PRIMARY KEY(nID)
);

DELETE FROM coordinatePt_Table WHERE nID < 100;
INSERT INTO coordinatePt_Table VALUES
(NULL, 0, 30.10, 110.0),
(NULL, 1, 34.10, 115.0);

SELECT * FROM coordinatePt_Table LIMIT 100;

SET @nTemp1 = 0;
SET @nTemp2 = 0;
SELECT nIndex INTO @nTemp1 FROM coordinatePt_Table WHERE nID = 1;
SELECT nIndex INTO @nTemp2 FROM coordinatePt_Table WHERE nID = 2;
UPDATE coordinatePt_Table SET nIndex = @nTemp2 WHERE nID = 1;
UPDATE coordinatePt_Table SET nIndex = @nTemp1 WHERE nID = 2;

记录肯定有更简单的方式实现需求。

UPDATE
coordinatePt_Table AS T1 JOIN
coordinatePt_Table AS T2 ON (T1.nID = 1 AND T2.nID = 2)
SET T1.nIndex = T2.nIndex, T2.nIndex = T1.nIndex;

MYSQL查询语句:

时间: 2024-10-17 13:50:23

MYSQL-交换表中2行2字段的值的相关文章

MYSQL 表中汉字写入或字段赋值时乱码情况排误

-- 当修改字段值,或是直接写入时,汉字变成乱码情况 ,[可注意一下数据库名,记得修改] -- 当字符顺序对汉字不兼容时,可能直接导致乱码情况发生. 最好做到库.表.字段(字符类型)排序规则是否一致 -- eg.在某库下建了临时表没有指定字符排序规则,下游会使用时,将临时表中的str字段值赋值给另外一个库表,可能会出现乱码 -- 未指定排序建表时,则表的排序规则是其库的排序规则 -- 1. 库级别 SELECT * -- DEFAULT_CHARACTER_SET_NAME DEFAULT_CO

mysql将一个表中字段A的值赋给另一个表的字段B

# mysql 的修改方法 update table_a a inner join table_b b on b.id=a.id set a.description=b.content; # mssql的修改方法 update b set a.description=b.content from table_a a inner join table_b b on a.id=b.id; mysql将一个表中字段A的值赋给另一个表的字段B

mysql向表中某字段后追加一段字符串:

mysql向表中某字段后追加一段字符串:update table_name set field=CONCAT(field,'',str) mysql 向表中某字段前加字符串update table_name set field=CONCAT('str',field) MySQL中concat函数使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串,则结果为非二进制字符串. 如果

如何使用MySQL一个表中的字段更新另一个表中字段

这篇文章主要介绍了如何使用MySQL一个表中的字段更新另一个表中字段,需要的朋友可以参考下 1,修改1列 ? 1 2 3 update student s, city c set s.city_name = c.name where s.city_code = c.code; 2,修改多个列 ? 1 2 3 update a, b set a.title=b.title, a.name=b.name where a.id=b.id ?子查询 ? 1 update student s set ci

Mysql 查找表中的前n大元素

转载注明出处:http://www.cnblogs.com/liangyongrui/p/8622593.html Mysql 查找表中的前n大元素 用程序写很简单,利用堆维护一下就行了,但是用sql呢? 解法: 假设需要比较的字段是a,找出前n大的行,则答案为count(比a小的行) < n的行.(说起来有点绕..看个例子就懂了) 假设有这样的一个表 Id Name Salary 1 Joe 70000 2 Henry 80000 3 Sam 60000 4 Max 90000 5 Janet

使用Sqoop1.4.4将MySQL数据库表中数据导入到HDFS中

问题导读:         1.--connect参数作用? 2.使用哪个参数从控制台读取数据库访问密码? 3.Sqoop将关系型数据库表中数据导入HDFS基本参数要求及命令? 4.数据默认导入HDFS文件系统中的路径? 5.--columns参数的作用? 6.--where参数的作用? 一.部分关键参数介绍 参数介绍 --connect <jdbc-uri> 指定关系型数据库JDBC连接字符串 --connection-manager <class-name> 指定数据库使用的管

PHP mysql 删除表中所有数据只保留一条

DELETE FROM `logs` WHERE wangzhi='www.juhutang.com' and id<>101072; 上面这段代码的意思为 删除表logs中 所有字段wangzhi含内容为www.juhutang.com的数据.但是不删除同表中 id 是101072 的这条数据. 当然了 我是新手,这条语句可能与标题不是那么完善, 希望大牛解答,删除表中所有数据,保留最近的一条 或者说只保留主键ID最大的一条. 这语句如何写. PHP mysql 删除表中所有数据只保留一条

在MySQL向表中插入中文时,出现:incorrect string value 错误

在MySQL向表中插入中文时,出现:incorrect string value 错误,是由于字符集不支持中文.解决办法是将字符集改为GBK,或UTF-8.      一.修改数据库的默认字符集        ALTER DATABASE db_name DEFAULT CHARCTER SET character_name [COLLATE... ] 例子:ALTER TABLE db_mysql DEFAULT CHARCTER SET gbk          注释: (COLLATE是字

将Hive统计分析结果导入到MySQL数据库表中(一)——Sqoop导入方式

最近在做一个交通流的数据分析,需求是对于海量的城市交通数据,需要使用MapReduce清洗后导入到HBase中存储,然后使用Hive外部表关联HBase,对HBase中数据进行查询.统计分析,将分析结果保存在一张Hive表中,最后使用Sqoop将该表中数据导入到MySQL中.整个流程大概如下: 下面我主要介绍Hive关联HBase表--Sqoop导出Hive表到MySQL这些流程,原始数据集收集.MapReduce清洗及WEB界面展示此处不介绍. 一.HBase数据库表 hbase(main):