2
我有這樣的代碼:需要幫助我查詢的WHERE子句優化這條SQL表達式
...
where @PageID in (...subquery...) or not exists(...subquery...)
...
子查詢是在兩種情況下是相同的。也就是說,只要子查詢不爲空,我就想讓@PageID出現在子查詢中。有沒有辦法使用子查詢一次具有相同的效果?
感謝 康斯坦丁
我有這樣的代碼:需要幫助我查詢的WHERE子句優化這條SQL表達式
...
where @PageID in (...subquery...) or not exists(...subquery...)
...
子查詢是在兩種情況下是相同的。也就是說,只要子查詢不爲空,我就想讓@PageID出現在子查詢中。有沒有辦法使用子查詢一次具有相同的效果?
感謝 康斯坦丁
假設你當前的查詢是這樣
DECLARE @PageID INT = -100
SELECT *
FROM sys.objects
WHERE @PageID IN (SELECT number FROM master.dbo.spt_values)
OR NOT EXISTS(SELECT number FROM master.dbo.spt_values)
我認爲這是相當於
SELECT *
FROM sys.objects
WHERE
ISNULL((SELECT MIN(CASE WHEN number = @PageID THEN 0 ELSE 1 END)
FROM dbo.spt_values),0)=0