2014-12-05 75 views
2

惊讶我以前没见过这个,但是使用谷歌搜索并没有产生太多的见解。从SQL查询中排除所有结果的有效方法是什么?

我正在使用一个将生成SQL查询的框架,就像它一样。我有能力在查询上添加过滤,并且出现了一个我希望排除所有可能结果的情况。

我最初的想法是将WHERE 1 = 0添加到查询的WHERE子句。

有没有更优化或有效的方法来做到这一点?

因为这个答案可以在平台之间变化,这将SQL Server上运行2008

+1

我确定优化器知道1不是0,所以这似乎是一种有效的方法。 – 2014-12-05 22:04:14

+0

是的,这也是我的猜测,但我更愿意发现,而不是仅仅依靠自己的假设。 – 2014-12-05 22:16:45

回答

2

你是正确的,这是排除从查询的所有结果的最佳和最常用的方法:

WHERE 1=0 
+0

最好提供一个指向官方文档的链接。 – 2014-12-05 22:22:23

+0

如果有人提供了更好的答案,我会更新选定的答案。 – 2014-12-05 22:27:33

1

WHERE 1 = 0是最常见的方法。用SELECT ... INTO #temp WHERE 1 = 0创建临时表结构很常见。

请注意,此情况可能导致查询引擎将查询计划短路,因此如果将其用于查询分析,请小心。

+0

这意味着分析可能会产生意想不到的结果?听起来就像在生产方面它是一个可接受的解决方案。 – 2014-12-05 22:16:11

+0

@JustinStandard意思是说,查询执行计划不适用。如果您正在调试查询计划,那就没有用。你没有为这个问题指定一个上下文。 – 2014-12-06 15:40:48

相关问题