作者whatsAcc (whatsAcc)
站内Database
标题Re: [SQL ] 两笔纪录里面的栏位值互换
时间Fri Oct 18 20:39:06 2013
※ 引述《qazwsx2013 (sam)》之铭言:
: 有一个疑问,请问一下各位
: 以下是我的test资料表
: id (主键), pid(唯一键)
: 我想做的是透过一句sql将两笔记录的pid值互换,
: sql="UPDATE test t1, test t2 SET t1.pid=t2.pid, t2.pid=t1.pid
: WHERE t1.pid=1 AND t2.pid=2";
: 但碰到问题是因为[ pid是唯一键 ],所以当更新其中一笔记录时,就会造成pid重复,
: 想请问有没有方法可以达成一句sql将两笔记录的pid值互换,
: 感谢
DECLARE @t1 int
DECLARE @t2 int
-- 暂存
SET @t1=(SELECT pid FROM test WHERE id=1)
SET @t2=(SELECT pid FROM test WHERE id=2)
UPDATE test SET pid=0 WHERE id=1 --用一个不存在的值先替代再交换
UPDATE test SET pid=@t1 WHERE id=2
UPDATE test SET pid=@t2 WHERE id=1
SELECT id, pid FROM test
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.36.3.228