各位朋友,小弟数据库有两个表
表1:
ID       组号         组名     简介        合作与否
1 166585057     武汉     武汉精英
2 741012867     湖北     湖北精英
3 790184188    北京     北京精英
4 27751864     广州     广州精英
5 35892497     满门     满门精英
6 42741        从化     从化精英
8 117723147     怀化     怀化精英
9 7412867     湖北     湖北精英
表2:组名     简介
武汉     武汉精英
湖北     湖北精英
想要的2个结果:
1、请问如何写SELECT语句,才能从表1里面选择出组名和简介都存在于表2的记录呢?
想要的结果如下:
ID       组号         组名     简介        合作与否
1 166585057     武汉     武汉精英
2 741012867     湖北     湖北精英
9 7412867     湖北     湖北精英
2、请问如何写UPDATE语句,才能更新表1的“合作与否”字段,条件是组名和简介都存在于表2的记录
想要的结果如下:
ID       组号         组名     简介        合作与否
1 166585057     武汉     武汉精英    合作成功
2 741012867     湖北     湖北精英    合作成功
9 7412867     湖北     湖北精英    合作成功
以上两条问题,诚心向各位大虾赐教,谢谢了!

解决方案 »

  1.   


    -- 1
    select a.*
    from tb1 a join tb2 b on a.组名 = b.组名 and a.简介 = b.简介-- 2
    update t
    set t.合作与否 = N'合作成功'
    from tb1 t join tb2 b on a.组名 = b.组名 and a.简介 = b.简介
      

  2.   


    declare @表1 table (ID int,组号 int,组名 varchar(4),简介 varchar(8),合作与否 sql_variant)
    insert into @表1
    select 1,166585057,'武汉','武汉精英',null union all
    select 2,741012867,'湖北','湖北精英',null union all
    select 3,790184188,'北京','北京精英',null union all
    select 4,27751864,'广州','广州精英',null union all
    select 5,35892497,'满门','满门精英',null union all
    select 6,42741,'从化','从化精英',null union all
    select 8,117723147,'怀化','怀化精英',null union all
    select 9,7412867,'湖北','湖北精英',nulldeclare @表2 table (组名 varchar(4),简介 varchar(8))
    insert into @表2
    select '武汉','武汉精英' union all
    select '湖北','湖北精英'select a.ID,a.组号,a.组名,a.简介,
    '合作成功' as 合作与否 from @表1 a inner join @表2 b on a.简介=b.简介
    /*
    ID          组号          组名   简介       合作与否
    ----------- ----------- ---- -------- --------
    1           166585057   武汉   武汉精英     合作成功
    2           741012867   湖北   湖北精英     合作成功
    9           7412867     湖北   湖北精英     合作成功
    */
      

  3.   

    ---1
     select * from 表1 a 
    where exists(select 1 from 表2 where 简介=a.简介 and 组名=a.组名)
    ---
    UPDATE a set 合作与否=(case when exists(select 1 from 表2 where 简介=a.简介 and 组名=a.组名) 
                         then '合作成功' end)
    from 表1 a
      

  4.   


    declare @表1 table (ID int,组号 int,组名 varchar(4),简介 varchar(8),合作与否 sql_variant)
    insert into @表1
    select 1,166585057,'武汉','武汉精英',null union all
    select 2,741012867,'湖北','湖北精英',null union all
    select 3,790184188,'北京','北京精英',null union all
    select 4,27751864,'广州','广州精英',null union all
    select 5,35892497,'满门','满门精英',null union all
    select 6,42741,'从化','从化精英',null union all
    select 8,117723147,'怀化','怀化精英',null union all
    select 9,7412867,'湖北','湖北精英',nulldeclare @表2 table (组名 varchar(4),简介 varchar(8))
    insert into @表2
    select '武汉','武汉精英' union all
    select '湖北','湖北精英'--第一问 查询
    select a.ID,a.组号,a.组名,a.简介,
    '合作成功' as 合作与否 from @表1 a inner join @表2 b on a.简介=b.简介
    /*
    ID          组号          组名   简介       合作与否
    ----------- ----------- ---- -------- --------
    1           166585057   武汉   武汉精英     合作成功
    2           741012867   湖北   湖北精英     合作成功
    9           7412867     湖北   湖北精英     合作成功
    */
    --第二问 更新
    update @表1 set 合作与否='合作成功'
    from  @表1 a inner join @表2 b on a.简介=b.简介
    select * from @表1/*
    ID          组号          组名   简介       合作与否
    ----------- ----------- ---- -------- ------------------
    1           166585057   武汉   武汉精英     合作成功
    2           741012867   湖北   湖北精英     合作成功
    3           790184188   北京   北京精英     NULL
    4           27751864    广州   广州精英     NULL
    5           35892497    满门   满门精英     NULL
    6           42741       从化   从化精英     NULL
    8           117723147   怀化   怀化精英     NULL
    9           7412867     湖北   湖北精英     合作成功
    */
      

  5.   


    select  ID, 组号, 组名, 简介, 合作与否
    from 表1
    where 组名 in(select 组名 from 表2)
    and 简介 in(select 简介from 表2)
    update 表1
    set 合作与否=''
    from where 组名 in(select 组名 from 表2)
    and 简介 in(select 简介from 表2)