一个关于Update的SQL语句,请高手指点

yuxuan 2002-11-29 09:58:40
我想用一条Update语句实现,Id字段的互换,如:

表A(ID,Value):

1 a
2 b
3 c
4 d
===============
一条SQL语句实现更新(其中ID是主键):

1 b
2 a
3 c
4 d




...全文
66 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
逍遥小贼 2002-12-01
  • 打赏
  • 举报
回复
如果是这样,我想你的ID字段就不能是自增的了,应该由程序来控制ID字段的增加,这样当用户调整顺序时,你就可以方便的进行控制了,你可以将两个要互换的纪录的ID进行互换,而不需要互换其他的字段
yuxuan 2002-11-30
  • 打赏
  • 举报
回复
看样子一下子实现不了
yuxuan 2002-11-29
  • 打赏
  • 举报
回复
谢谢大家的参与

因为我要根据ID排序,用户可以调整顺序,调整顺序时,我就互换Id的值,各位有没有高见?
snowy_howe 2002-11-29
  • 打赏
  • 举报
回复
update a set value =
(select substr(b.value,instr(b.value,'@')+1) value
from
(select c.id,(c.value||'@'||(select value from a where id = 2)) value
union
select d.id,(d.value||'@'||(select value from a where id = 1)) value
from a d where d.id = 2
union
select e.id,e.value from a e where e.id not in (1,2)
) b where b.id = a.id)
/

我知道上述语句有很多缺陷,比如他只能更改id =1和id =2 的内容,还得要求value里面没有特殊字符'@',还有要求id唯一,希望对你的思路有所帮助。

另外,我不禁要问,为什么非要一条sql语句,考验大家的sql能力?
jlandzpa 2002-11-29
  • 打赏
  • 举报
回复
没有看懂字段是怎么互换的?
wuxuan 2002-11-29
  • 打赏
  • 举报
回复
这个恐怕实现不了,至少需要两条SQL语句来实现.
use select ... into newtable,

然后关联两个表进行update.
360等软件会报安全未知软件,允许执行。 v1.1.2014.10更新 1、增加了表表之间的关系,通过外键关系的实体类访问更方便 2、增加了DAL的Insert函数。其它基本操作在后续版本中实现. 3、增加了部分表、字段的中文注释功能等; 4、修正了一部分错误; 5、增加一个简单的示例; 软件件适用: 1、根据SQL数据库生成实体文件类,类似于SqlMetal和动软代码生成器,但是相比较SqlMetal简化了较多的不常用的函数(我认为的),成员变量支持数据库字段注释,一个表对应一个文件,不像sqlmetal如果数据库表和字段多了,一下生成几千行一个文件。 2、数据库操作采用的LINQ TO SQL,小规模的应当问题不大吧,实现了INSERT,UPDATE,EXIST,GET方法。DELETE比较简单,自己写吧,写在LINQ里面,我觉得不划算。 3、相比较动软代码生成器,生成代码除系统组件(System命名空间)外,不调用任何第三方组件。 4、可以做B\S的,也可以做C\S的,生成的示例以B\S。 5、纯绿色软件,无需要安装,而且只有一个文件! 运行环境: 1、64位操作系统,32位的没有测试过。需要.net fromwork4.0支持,当然还要一个数据库才能生成。 2、数据库SQL2008Express版本以上,高于此版本应当当没有问题。低于此版本,我只能呵呵的,说不定可以…… 3、数据库配置方式引用了Discuz!NT的做法,没有写在Web.Config文件里面。稍作修改你可以完全写出其它类似的配置文件。可惜,Discuz!NT现在不做了!在此深表怀念! 4、建议每个表都要定义主键或唯一键,建立索引否则生成的LINQ语句将无法完成查询。 v1.1.2014.10程序校验码: MD5 :3F7BE759F0BE7E86236620D57D4472FE SHA1 :69BABBBA33D516FA1AD0068F44C145989103FB4B CRC32 :EAD371EA 如果需要交流,加群:点软件上面的QQ直接加哦! 本软件适用开发小软件吧,大软件不知道性能怎么样,欢迎高手指点
Mysql数据库设计 数据库设计 MYSQL数据库设计 串转义序列 \0 NUL(ASCLL 0) \' \" \b 退格 \n 新⾏ \r 回车 \t 制表符 \\ 反斜杠 数值列类型 TINYINT 1字节 ⾮常⼩的整数 有符号值:-128⾄127 ⽆符号值:0⾄255 SMALLINT 2字节 较⼩的整数 有符号值:-32768 MEDIUMINT 3字节 中等⼤⼩的整数 有符号值: INT 4字节 标准整数 有符号值: BIGINT 8字节 ⼤整数 有符号值: FLOAT 4字节 单精度浮点数 有符号值: DOUBLE 8字节 双精度浮点数 有符号值: DECIMAL M字节 ⼀个串的浮点数 有符号值: CHAR VARCHAR TINYBLOB BLOB MEDIUMBLOB LONGBLOB TINYTEXT TEXT MEDIUMTEXT LONGTEXT ENUM SET ⽇期与时间类型格式 DATE "YYYY-MM-DD" TIME "hh:mm:ss" DATETIME "YYYY-MM-DD hh:mm:ss" TIMESTAMP "YYYYMMDDhhmmss" YEAR "YYYY" 数值列类型的取值范围 数值列的列属性: AUTO_INCREMENT 创建⼀个唯⼀标志符号或许顺序值 create table a ( I int auto_increment not null primary key); UNSIGNED 禁⽌此属性存在负值 create table test(num tingint , num2 tingint unsigned); NULL and NOT NULL 缺省为NULL create talbe test (num int, num2 int default 1, num3 int default null) 运算符 = 等于 <>或者!= 不等于 <=> NULL安全的等于(NULL-safe) < ⼩于 > ⼤于 <= ⼩于等于 >= ⼤于等于 BETWEEN 存在与指定范围 IN 存在于指点集合 IS NULL 为NULL IS NOT NULL 不为NULL LIKE 通配符匹配 REGEXP或者RLIKE 正则表达式匹配 %(百分号) a%b表⽰以a开头b结尾的任意长度的字符串 _(下横线) a_b表⽰以a开头b结尾的长度为3的任意字符, PRIMARY KEY UNIQUE NOT NULL AUTO_INCREMENT DEFAULT default_value PRIMARY KEY 与UNIQUE 数据库操作: show database; show tables; use dataname; create database 数据库名; create table test( id int primary key auto_increment, title varchar(16) ); describe 表名; desc 表名; drop talbe tablename; alter talbe 表名 action add 列名 add primary key alter 列名 set default drop 列名 drop primary key drop index index_name rename as 新表名 insert into 表名(id,name,...) valuse(1,liqingbo); update 表名 set 列名=数据值 where ⼦句; delet from 表名 where ⼦句; select group by having order by limit desc asc count sum avg max min resource mysql_connect(host,root,password); mysql_close(); bool mysql_select_db(tablename[,],连接返回变量); resource mysql_query(SQL语句) resource mysql_db_query(tablename[,]); array mysql_fetch_row(); array mysql_fetch_array(); MYSQL_ASSOC: MYSQL_NUM: MYSQL_BOTH: mysql_num_fields(); 取得结果集中字段的数⽬ mysql_num_rows(); 取得结果集中⾏的数⽬ mysql_result(); mysql_free_result(); mysql_close(); mysql_pconnect; mysql_create_db; m

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧