假设一个表record_test中有三个字段:id,on,off,其中id是以1自增的
id on off
1 11 111
2 22 222
3 33 333
4 44 444
5 55 555
6 66 666
7 77 777
8 88 888
.......
现在想要实现的是将第一行的off值更新到第二行的on值,第二行的off值更新到第三行的on值,即前一行的off值更新到下一行的on值,请写一条sql语句
问题解决了吗,给你个SQL语句
update record_test set a.on =b.off from record_test a inner join (select id,off from record_test) b on a.id=b.id+1
嗯,谢谢mifeng2012的回答,我问其他人给我答案是 update a SET a.turnontime=b.turnofftime
FROM (SELECT * FROM test_zxq) a,(SELECT * FROM test_zxq) b
WHERE a.id=b.id+1,跟您的一样,不过你的更精简,呵呵
两种写法:
1、子查询,很容易实现~
2、连接更新~(前提是连续主键,当然不连续也是有办法的!)
幻天空,你好,请问可以看看你的sql吗?谢谢了
@xiaoqiangzhou:
update record_test set on=(select top 1 off from record_test t where t.id=id-1) where record_test.id>1 子查询版,未测试! 连接也是一个道理~
@幻天芒: 谢谢你的回答,我将你的语句测试了下,有一处需要改正,那就是子查询中
t.id=id-1后面的id需要指明是哪个表中的,应该是t.id=record_test.id-1,这样测试通过,不然子查询中两个ID都是识别成t表了。导致查询不到数据
二楼的好些
恩