使用SqlDependency的IN运算符不起作用。

3

SQLDependency能够与IN操作符一起使用吗? 我的命令是:

SELECT n.PublishedAt
FROM dbo.Navigations n
WHERE NavigationGroupId IN (SELECT ng.Id FROM dbo.NavigationGroups ng
                            WHERE ng.SiteId = 1
                              AND ng.IsActive = 1
                              AND ng.[Type]= 'Secondary')
  AND n.IsActive = 1

我查看了MSDN文档,但没有提到IN运算符。

提前感谢您的帮助。


2
该语句不得包含子查询、外连接或自连接。嗯,IN通常映射为半连接。可能不被支持。您能将IN表达为内连接吗? - usr
@usr - 你更直接地掌握了它 - IN() 被定义为子查询或表达式序列 - OP问题中的是一个子查询。而你的引用涵盖了剩下的内容。 - Damien_The_Unbeliever
@usr,我认为你应该将你的评论转换成一个答案,这样它就可以被点赞了。因为其他人在某个时候也会遇到这个问题。 - Ian Ringrose
1个回答

3

从文档中可以看到:

"该语句不能包含子查询、外连接或自连接。"

IN通常映射为半连接。 Damien_The_Unbeliever指出:

IN()被定义为子查询或表达式序列 - 在OPs问题中是一个子查询。

因此,它可能不被支持。

你能把IN表达为内连接吗?如果IN查询对于每个外部行最多产生一行,则保留语义。如果有多个,则行将重复。虽然这对于通知无关紧要,但它应该在完全相同的情况下触发。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接