我想实现这样的功能:
从数据库中查询出两条数据: 001 红色 w001 s01
002 绿色 w002 s02这两条数据交换结果: 001 绿色 w002 s02
002 红色 w001 s01用一个事务处理应该怎样写???
从数据库中查询出两条数据: 001 红色 w001 s01
002 绿色 w002 s02这两条数据交换结果: 001 绿色 w002 s02
002 红色 w001 s01用一个事务处理应该怎样写???
begin TRANSACTION
declare @id1 varchar(10)
declare @id2 varchar(10)
select @id1=max(id),@id2=min(id) from #tab
select id=case when @id1=id then @id2 else @id1 end,rgb,col1,col2 from #tab
commitid rgb col1 col2
---------- ---------- ---------- ----------
001 绿色 w002 s02
002 红色 w001 s01(2 行受影响)
set id = (case when id='001' then '002' else '002' end)
from
#tab a join #tab b
on a.id<>b.id
order by a.id/*
id rgb col1 col2
---------- ---------- ---------- ----------
001 红色 w002 s02
002 绿色 w001 s01(所影响的行数为 2 行)
*/
[code=SQL]create table #tab(id varchar(10),rgb varchar(10),col1 varchar(10),col2 varchar(10))insert into #tab values('001','红色','w001','s01')insert into #tab values('002','绿色','w002','s02')select a.id,b.rgb,b.col1,b.col2
from
#tab a join #tab b
on a.id<>b.id
order by a.id/*
id rgb col1 col2
---------- ---------- ---------- ----------
001 绿色 w002 s02
002 红色 w001 s01(所影响的行数为 2 行)
*/