with cte as
(
select rowid from batchinfo where datapath like '%thc%'
)
select * from qvalues where rowid in cte
我收到此错误:
Msg 102,Level 15,State 1,Line 6 'cte'附近的语法不正确。
有谁知道我做错了什么?
答案 0 :(得分:8)
您正在将CTE视为子查询,而应将其更像是一个表格。
试试这个
;with cte as
(
select rowid from batchinfo where datapath like '%thc%'
)
select * from qvalues
INNER JOIN cte on cte.rowid=qvalues.rowid
答案 1 :(得分:1)
在Al W的回答(以及Tony的评论)中随便提到。错误被描述为在第6行发生的事实意味着它不是批处理中的第一个语句。这意味着您需要在WITH关键字之前加一个分号:
当CTE在作为批处理一部分的语句中使用时,其前面的语句必须后跟分号。
此外,来自Transact-SQL Syntax conventions:
虽然此版本的SQL Server中的大多数语句不需要分号,但在将来的版本中将需要使用分号。
因此,养成分号的习惯是值得的。