2011-09-05 93 views
0

如何在SQL Server中同時執行兩條命令?如何在SQL Server 2008中同時執行兩條命令

我想根據行數得到一個表的行數和一些行。例如,我想獲得一個表的行數,並假設我想在單個頁面上獲得最後50行。

我該怎麼做?


EDIT 1)

考慮,我第一次得到數並返回給我100,我希望得到80到100 recordsin此時,另一含有交易可能會刪除70到100條記錄,我無法獲得適當的記錄

+0

是否必須在兩個命令,或者你確定,如果它僅僅是一個? –

+0

如果你想根據行數選擇你的選擇 - 你需要首先**等待直到行數完成 - 你不能並行地完成這項工作...... –

回答

1

內聯計數可以多次評估,也可以給出不同的結果。一個單獨的CROSS JOIN方法在某些時候

參見將給出不同的結果爲什麼與攝製腳本:can I get count() and rows from one sql query in sql server?

;WITH aCTE AS 
(
    SELECT 
     *, 
     COUNT(*) OVER() AS TotalRows, 
     ROW_NUMBER OVER (ORDER BY SomeLatest DESC) AS rn 
    FROM 
     MyTable 
) foo 
SELECT 
    * 
FROM 
    foo 
WHERE 
    rn <= 50 
+0

對不起@ gbn爲我的信心是你的腳本總是返回真正的結果? – Arian

+0

@尼瑪:是的,它是安全的 – gbn

1
select * from tableName1 where column1=(select count(*) from tableName2) 
2

您的要求是高效率還是執行單個命令?這些不一定導致相同的事情。有關實現高效尋呼的良好討論,請參閱this articlethis follow-up discussion。不要重新發明輪子,也不要認爲處理兩者的單一命令必然會比其他解決方案更有效率。

1

如果我理解正確,你想要一個查詢,做表中的所有記錄的計數,並在同一時間只獲得50行。 你可以做到這一點是這樣的:

Select Top 50 Column1, column2, (Select count(ID) from table1) as total from Table1 

個人而言,我更願意執行兩個查詢。一個用於計數,另一個用於前50行(效率更高的IMo)

+0

請參閱編輯1 – Arian