这样:SELECT COUNT(*) AS Expr1 FROM dbo.Shop_ClassTree WHERE (pID = (SELECT pID FROM dbo.Shop_ClassTree WHERE (ID = ?))) AND (ID <> ?)这样就要传2个相同的参数,太麻烦,能不能改一下写法,只使用一个参数就可以实现,谢谢

解决方案 »

  1.   

    declare @s varchar(50)
    set @s=???SELECT 
      COUNT(*) AS Expr1 
    FROM 
      dbo.Shop_ClassTree 
    WHERE 
      (pID = (SELECT pID FROM dbo.Shop_ClassTree WHERE id in(+'???'+))
      

  2.   

    你的语句就是一个参数.没有用到两个参数.PID是根据ID获取的.
      

  3.   

    或者用charindex(','+@s+',',','+id+',')>0
      

  4.   

    搂主这样查出来有值么,一个ID对应了一个PID  
    查询条件是 PID = @PID,ID<>@ID
      

  5.   


    SELECT COUNT(*) AS Expr1 FROM dbo.Shop_ClassTree 
    WHERE    (pID = (SELECT pID FROM dbo.Shop_ClassTree WHERE (ID = ?))) 
    AND 
       (ID <> ?)
    (pID = (SELECT pID FROM dbo.Shop_ClassTree WHERE (ID = ?))) 和 (ID <> ?) 是并列关系啊
    ,如果没有(ID <> ?)这个条件 COUNT(*)返回的值永远是>=1的,我想要排除ID'本身的记录,如果还存在除了ID'本身的记录以外是否还存在pID=ID'这条记录的pID的记录存在