如何实现这个功能: where 列1,列2,列3 in (select 列1,列2,列3 from 表名)
-------------------
好象对于in的用法,只能是
where 列名 in (select 列名 from 表名)
这种形式,可是我想查出:
列1,列2,列3 的组合在
select 列1,列2,列3 from 表名
中的记录,如何实现呢?
不知我是否讲明白了。

解决方案 »

  1.   

     where   checksum(列1,列2,列3)   in   (select   checksum(列1,列2,列3)   from   表名) 
      

  2.   


    where 列1 in  (select 列1  from   表名)  
    and 列2 in  (select 列2  from   表名)
    and 列4 in  (select 列3  from   表名)
      

  3.   


    -----------------------当有几个主键时##
    select * from t where binary_checksum(col1,col2,col3,col4,col5)in
    (select binary_checksum(col1,col2,col3,col4,col5) from 
    t group by binary_checksum(col1,col2,col3,col4,col5) having count(1) >1)
      

  4.   


    where   cast(列1 as varchar(10))+cast(列2 as varchar(10))+cast(列3 as varchar(10))   
    in   
    (
    select   cast(列1 as varchar(10))+cast(列2 as varchar(10))+cast(列3 as varchar(10)) from   表名

      

  5.   

    楼上
    列4 in   列3  了?where 列1+列2+列3 in(select 列1+列2+列3 from 表名)
      

  6.   

    where   ltrim(列1)+ltrim(列2)+ltrim(列3)   in(select   ltrim(列1)+ltrim(列2)+ltrim(列3)   from   表名) 
      

  7.   

    where 列1 in  (select 列1  from   表名)  
    and 列2 in  (select 列2  from   表名)
    and 列4 in  (select 列3  from   表名)与
    where   cast(列1 as varchar(10))+cast(列2 as varchar(10))+cast(列3 as varchar(10))   
    in   
    (
    select   cast(列1 as varchar(10))+cast(列2 as varchar(10))+cast(列3 as varchar(10)) from   表名
    ) 好象都可以实现,哪种方法更好,效率更高呀?
      

  8.   

    ---try where exists (select 1 from table a where a.col1=col1 and a.col2=col2 and a.col2=col3)
      

  9.   

    ~~!!!!!!!!!!!!!!!where 列1 in  (select 列1  from   表名)  
    and 列2 in  (select 列2  from   表名)
    and 列4 in  (select 列3  from   表名)-----------------------------------where convert(varchar, 列1) + convert(varchar, 列2) + convert(varchar, 列3) 
    in  
    (select convert(varchar, 列1) + convert(varchar, 列2) + convert(varchar, 列3) from 表名)  ---------------------------这样就可以了
      

  10.   

    where   convert(varchar,   列1)   +   convert(varchar,   列2)   +   convert(varchar,   列3)   
    in     
    (select   convert(varchar,   列1)   +   convert(varchar,   列2)   +   convert(varchar,   列3)   from   表名)

     
    select * from t where binary_checksum(col1,col2,col3,col4,col5)in
    (select binary_checksum(col1,col2,col3,col4,col5) from 
    t group by binary_checksum(col1,col2,col3,col4,col5) having count(1) >1)
    两种方法,哪种效率高呀?
      

  11.   

    列1   in   (select   列1,列2,列3   from   表名) 
    union all
    列2 in (select   列1,列2,列3   from   表名) 
    union all
    列3 in (select   列1,列2,列3   from   表名)