2016-06-08 41 views
0

如何避免嵌套此查詢。我認爲它擴大了查詢範圍,使閱讀變得更加困難。我知道我可以將Row_number() OVER (ORDER BY id ASC)放在where條款中,但是有沒有辦法解決這個問題?如何避免使用row_number嵌套sql查詢

SELECT * 
FROM (SELECT [id], 
       [title], 
       [image], 
       [description], 
       [column5154], 
       [column5155], 
       [column5156], 
       RowNumber1 = Row_number() OVER (ORDER BY id ASC) 
     FROM [TestTable] x 
WHERE x.rownumber1 % 5 = 0 
+1

尋找更適合您的風格。這是編寫查詢的正確方法(語法錯誤除外)。 –

+1

您可以將內部查詢放入CTE中。 –

+0

您可以嘗試創建一個臨時表來存儲嵌套查詢的結果。之後,您可以從此時間表中進行選擇。 –

回答

3

如果你想每一個第五行,不在乎RowNumber1,而不想使用子查詢,你可以這樣做:

select top (20) percent t.* 
from testtable t 
order by row_number() over (order by id asc)) % 5; 

窗口功能被允許在order by。就我個人而言,我認爲子查詢更容易理解。

+0

同意。就個人而言,我會去CTE或子查詢。它更清潔,更易於理解。性能沒有任何不同 – Squirrel