我想实现这样的功能:
从数据库中查询出两条数据:   001    红色    w001   s01
  002    绿色     w002   s02这两条数据交换结果:   001    绿色     w002   s02
  002    红色    w001   s01用一个事务处理应该怎样写???                                                                                                                                             

解决方案 »

  1.   

    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')
    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 行受影响)
      

  2.   

    update table
    set id = (case when id='001' then '002' else '002' end)
      

  3.   

    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,a.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 行)
    */
      

  4.   


    [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 行)
    */