驚訝我以前沒見過這個,但是使用谷歌搜索並沒有產生太多的見解。從SQL查詢中排除所有結果的有效方法是什麼?
我正在使用一個將生成SQL查詢的框架,就像它一樣。我有能力在查詢上添加過濾,並且出現了一個我希望排除所有可能結果的情況。
我最初的想法是將WHERE 1 = 0
添加到查詢的WHERE子句。
有沒有更優化或有效的方法來做到這一點?
因爲這個答案可以在平臺之間變化,這將SQL Server上運行2008
驚訝我以前沒見過這個,但是使用谷歌搜索並沒有產生太多的見解。從SQL查詢中排除所有結果的有效方法是什麼?
我正在使用一個將生成SQL查詢的框架,就像它一樣。我有能力在查詢上添加過濾,並且出現了一個我希望排除所有可能結果的情況。
我最初的想法是將WHERE 1 = 0
添加到查詢的WHERE子句。
有沒有更優化或有效的方法來做到這一點?
因爲這個答案可以在平臺之間變化,這將SQL Server上運行2008
你是正確的,這是排除從查詢的所有結果的最佳和最常用的方法:
WHERE 1=0
最好提供一個指向官方文檔的鏈接。 – 2014-12-05 22:22:23
如果有人提供了更好的答案,我會更新選定的答案。 – 2014-12-05 22:27:33
WHERE 1 = 0
是最常見的方法。用SELECT ... INTO #temp WHERE 1 = 0
創建臨時表結構很常見。
請注意,此情況可能導致查詢引擎將查詢計劃短路,因此如果將其用於查詢分析,請小心。
這意味着分析可能會產生意想不到的結果?聽起來就像在生產方面它是一個可接受的解決方案。 – 2014-12-05 22:16:11
@JustinStandard意思是說,查詢執行計劃不適用。如果您正在調試查詢計劃,那就沒有用。你沒有爲這個問題指定一個上下文。 – 2014-12-06 15:40:48
我確定優化器知道1不是0,所以這似乎是一種有效的方法。 – 2014-12-05 22:04:14
是的,這也是我的猜測,但我更願意發現,而不是僅僅依靠自己的假設。 – 2014-12-05 22:16:45