Sql 左连接3个表where子句语法不正确

Sql 左连接3个表where子句语法不正确,sql,sql-server-2008,Sql,Sql Server 2008,我试图使用WHERE子句跨3个表创建联接,但出现错误: '靠近'=''的语法不正确 我不知道我做错了什么 我的声明如下: 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_LIN

我试图使用
WHERE
子句跨3个表创建联接,但出现错误:

'靠近'=''的语法不正确

我不知道我做错了什么

我的声明如下:

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

您缺少
WHERE
子句后面的表达式以将其与表达式
(CHARINDEX('t',TBL\u CS\u LINKS.LINK\u 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

您缺少
WHERE
子句后面的表达式以将其与表达式
(CHARINDEX('t',TBL\u CS\u LINKS.LINK\u 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

删除
WHERE
子句中的
=

...
WHERE (CHARINDEX('t', TBL_CS_LINKS.LINK_URL) > 0)  OR ...
根据文件:

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

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

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

因此您的
WHERE
子句不需要
=
符号。

WHERE
子句中删除
=

...
WHERE (CHARINDEX('t', TBL_CS_LINKS.LINK_URL) > 0)  OR ...
根据文件:

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

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

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

因此您的
WHERE
子句不需要
=
符号。

WHERE=
是您的问题。只要把它改成
WHERE
WHERE=
就是你的问题。只需将其更改为
WHERE