这样:SELECT COUNT(*) AS Expr1 FROM dbo.Shop_ClassTree WHERE (pID = (SELECT pID FROM dbo.Shop_ClassTree WHERE (ID = ?))) AND (ID <> ?)这样就要传2个相同的参数,太麻烦,能不能改一下写法,只使用一个参数就可以实现,谢谢
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(+'???'+))
你的语句就是一个参数.没有用到两个参数.PID是根据ID获取的.
或者用charindex(','+@s+',',','+id+',')>0
搂主这样查出来有值么,一个ID对应了一个PID 查询条件是 PID = @PID,ID<>@ID
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的记录存在
set @s=???SELECT
COUNT(*) AS Expr1
FROM
dbo.Shop_ClassTree
WHERE
(pID = (SELECT pID FROM dbo.Shop_ClassTree WHERE id in(+'???'+))
查询条件是 PID = @PID,ID<>@ID
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的记录存在