SQL [硬查询 - 制作或避免]

时间:2010-01-21 13:28:30

标签: sql

SELECT Name, 
       ( NOT (ID_ListGroupParIzm 
              IN (SELECT ID_Param 
                    FROM TbUserParam
                   WHERE ID_User=:ID_User
                 )
              )  
       ) Visi 
  FROM CfgListParIzm 
 WHERE ID_ListGroupParIzm=:ID_ListGroupParIzm

错误:

Message 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword "NOT".
Message 102, Level 15, State 1, Line 2
Incorrect syntax near the construction ":".

补充道: 我会尝试用它来解释我想要的东西。

如果ID_ListGroupParIzm IN(SELECT ID_Param FROM TbUserParam),我需要来自一个表的名称和每个Node的BOOL值将是假的 WHERE ID_User =:ID_User

ID_ListGroupParIzm(来自CfgListParIzm)= ID_Param(来自TbUserParam) 忘了说:(

btw:看起来像select不能返回逻辑值。 。 。 如何实现我的目的:(

添加了一个尝试:

SELECT  Name,
        COALESCE(
        (
        SELECT  TOP 1 0
        FROM    TbUserParam
        WHERE   TbUserParam.ID_User = :ID_User
                AND TbUserParam.ID_Param = CfgListParIzm.ID_ListParIzm
        ), 1) Visi
FROM    CfgListParIzm
WHERE   CfgListParIzm.ID_ListGroupParIzm = :ID_ListGroupParIzm

错误:     消息102,级别15,状态1,行6 构造“:”附近的语法不正确。

但是......确定> _<我需要将其重新制作为程序,谢谢。

1 个答案:

答案 0 :(得分:2)

SELECT  Name,
        COALESCE(
        (
        SELECT  TOP 1 0
        FROM    TbUserParam
        WHERE   ID_User = :ID_User
                AND ID_ListGroupParIzm = :ID_ListGroupParIzm
        ), 1) Visi
FROM    CfgListParIzm
WHERE   ID_ListGroupParIzm = :ID_ListGroupParIzm