有两个表 A表 主键自增长ID(有1,2,3,4四条记录)   B表  有个字段A_ID(有一条记录 "1,2,3" 是个字符串)
想做的是 从A表查出ID为1,2,3的记录(就是A_ID中的值)
我想用in 可是A_ID是一个字符串 用in有问题求sql语句....

解决方案 »

  1.   

    string str = "(1,2,3)";
    "in "+ str??
      

  2.   

    string a = string.Format("select * from table where id in {0}",abc)
      

  3.   

    select A.数据 from A inner join B on A.Id=B.A_Id where B.A_Id ='1' or  B.A_Id ='2'
    or  B.A_Id ='3'据长辈说OR效率低
      

  4.   

    只是求select语句  不涉及c#....  
      

  5.   

    select * from table where id=1 and id=2 and id=3 
      

  6.   

    sql 一条句子搞不定吧,你要截取字符串了,我就这个水平,用C#还方便点
      

  7.   

    就是感觉要用截取字符串 用不好啊   如果用c#的话  要先查B表的B_ID 再查A表 感觉有点麻烦
    然后就想问下有没有一条sql语句能直接查出来结果的
    7楼的哥们  1 2 3是B表中的A_ID字段(varchar)的值"1,2,3"  不是死值  怎么能截取出来 1 2 3 ??又怎么能根据A_id里面的值 设置where条件?  这是个问题
      

  8.   

    写存储过程,在sql里拼好字符串,用exec函数执行。
      

  9.   

    string a = string.Format("select * from table where id in ({0}) ",abc)
      

  10.   

    declare  @B varchar(20)
    select @B=replace(replace(A_ID,' ',''),',',''',''') from B
    declare @A varchar(100)
    set @A='select * from A where ID in ('''+@B+''')'
    select @A
    exec (@A)或者用游标的方式
      

  11.   

    据说一句SQL无解的
    要么存储过程,要么查两次
    SELECT 
    '''' + REPLACE(a,',',''',''') + '''' AS all
    FROM (
    SELECT A_ID AS a FROM B) a
    再查一下
    SELECT * FROM dbo.A WHERE ID IN (all)
      

  12.   

    明白楼主的意思了,首先你B表里存的值有问题,要用分隔符,就每一个数字后面都把分隔符带上。
    "1,2,3" 可以改成 "1,2,3,"。
    这样在查询的时候就可以这么写了:select top 10 * from dbo.A a with(nolock)
    where exists(select top 1 1 from dbo.B b with(nolock)
    where b.A_ID like '%'+CAST(a.id as nvarchar(10))+',%')
      

  13.   

    /*可以用charindex内置函数*/
    select * from A where charindex(','+ID+',',',1,2,3,')>0