0

我正在尝试使用WHERE子句跨 3 个表创建 JOIN,但出现错误:

'=' 附近的语法不正确。

我不知道我做错了什么?

这是我的声明:

select 
    TBL_CS_PROJECT.NAME ,
    TBL_CS_LINKS.LINK_URL , 
    TBL_CS_CLICKS.CLICK_COUNT 
from 
    TBL_CS_PROJECT 
left join 
    TBL_CS_LINKS on TBL_CS_PROJECT.PROJECT_ID = TBL_CS_LINKS.PROJECT_ID 
right join 
    TBL_CS_CLICKS on TBL_CS_LINKS.LINK_ID = TBL_CS_CLICKS.LINK_ID 
WHERE =  (CHARINDEX('t', TBL_CS_LINKS.LINK_URL) > 0) 
    OR  (CHARINDEX('t', TBL_CS_PROJECT.NAME) > 0) 
order by   
    TBL_CS_PROJECT.NAME
4

3 回答 3

3

=WHERE子句中删除

...
WHERE (CHARINDEX('t', TBL_CS_LINKS.LINK_URL) > 0)  OR ...

根据文档:CHARINDEX MSDN Doc

CHARINDEX- 在一个表达式中搜索另一个表达式,如果找到则返回它的起始位置。

这已经是一个布尔表达式:

(CHARINDEX('t', TBL_CS_LINKS.LINK_URL) > 0) 

所以你的WHERE条款不需要=签名。

于 2012-11-11T12:33:37.207 回答
1

您在WHERE子句之后缺少表达式,以将其与运算符工作方式的表达式进行(CHARINDEX('t', TBL_CS_LINKS.LINK_URL) > 0)比较=

....
WHERE =  (CHARINDEX('t', TBL_CS_LINKS.LINK_URL) > 0) 
OR  (CHARINDEX('t', TBL_CS_PROJECT.NAME) > 0) order by   TBL_CS_PROJECT.NAME

删除=运算符:

   ...
   WHERE CHARINDEX('t', TBL_CS_LINKS.LINK_URL) > 0
     OR  CHARINDEX('t', TBL_CS_PROJECT.NAME) > 0
   order by   TBL_CS_PROJECT.NAME
于 2012-11-11T12:33:08.953 回答
1

WHERE =是你的问题。只需将其更改为WHERE

于 2012-11-11T12:35:10.093 回答