SELECT * 
FROM  t1 
WHERE EXISTS
      (
       SELECT * 
       FROM t2 
       WHERE t1.signID=t2.signID
             AND t2.s1='22'
      )

解决方案 »

  1.   

    --> 测试数据: @T1
    declare @T1 table (id int,signID int,s1 varchar(1))
    insert into @T1
    select 1,1001,'a' union all
    select 2,1002,'b'
    --> 测试数据: @T2
    declare @T2 table (SignID int,s1 int,s2 int)
    insert into @T2
    select 1001,11,22 union all
    select 1001,22,33 union all
    select 1002,33,44 union all
    select 1001,22,33
    select a.* from @t1 a left join @t2 b on a.signid=b.signid
    where b.s2='22'
      

  2.   

    谢谢,楼上的两种方法都不错。。
    不过2楼的方法好象在建表前要加上union all,这个在表格的基本结构都定好的情况下,如何才能实现呢?
      

  3.   


    我那是做的测试数据,你不需要管``
    只需要执行语句就行了
    --执行这个:
    select a.* from t1 a left join t2 b on a.signid=b.signid
    where b.s2='22'
      

  4.   

    谢谢楼上,但是我如果不加你上面的union all建表的话,这个join语句会出现两条语句落:
      id  signID(主键)  s1
      1    1001         a   
      1    1001         a 我只想要内容相同的一条就可以了,不管t2.s1下面有几个相同的。
      

  5.   


    --倒,,说了那是建表语句,你根本就不用管。那我写成这样行了吧?---这个只是建立个测试环境,你不用管这个啊。
    create table T1(id int,signID int,s1 varchar(1))
    insert into T1 select 1,1001,'a'
    insert into T1 select 2,1002,'b'
    --> 测试数据: T2
    create table T2(SignID int,s1 int,s2 int)
    insert into T2 select 1001,11,22
    insert into T1 select 1001,22,33 
    insert into T1 select 1002,33,44
    insert into T1 select 1001,22,33--只需要执行这个就行了。大哥
    select a.* from t1 a left join t2 b on a.signid=b.signid
    where b.s2='22'
      

  6.   

    求高手指点下,多谢~
    create table tb_RaisesPays
    (
      id int,
      signID int primary key ,
      s1 varchar(10)
    )
    go
    insert into tb_RaisesPays(id,signID,s1) values(1,1001,'a')
    insert into tb_RaisesPays(id,signID,s1) values(2,1002,'b')
    gocreate table tb_RaisesPays_Detailed
    (
      SignID int foreign key references tb_RaisesPays(signID),
      s1 varchar(10),
      s2 varchar(10)
    )
    go
    insert into tb_RaisesPays_Detailed values(1001,'11','22')
    insert into tb_RaisesPays_Detailed values(1001,'22','33')
    insert into tb_RaisesPays_Detailed values(1001,'33','44')
    insert into tb_RaisesPays_Detailed values(1001,'22','44')
    goselect Main.* from tb_RaisesPays Main 
    left join tb_RaisesPays_Detailed Detailed 
    on Main.signID=Detailed.signID 
    where Detailed.s1='22'
    go