如何在SQL Server 2008中同时执行两条命令

问题描述:

如何在SQL Server中同时执行两条命令?如何在SQL Server 2008中同时执行两条命令

我想根据行数得到一个表的行数和一些行。例如,我想获得一个表的行数,并假设我想在单个页面上获得最后50行。

我该怎么做?


EDIT 1)

考虑,我第一次得到数并返回给我100,我希望得到80到100 recordsin此时,另一含有交易可能会删除70到100条记录,我无法获得适当的记录

+0

是否必须在两个命令,或者你确定,如果它仅仅是一个? –

+0

如果你想根据行数选择你的选择 - 你需要首先**等待直到行数完成 - 你不能并行地完成这项工作...... –

内联计数可以多次评估,也可以给出不同的结果。一个单独的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

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

您的要求是高效率还是执行单个命令?这些不一定导致相同的事情。有关实现高效寻呼的良好讨论,请参阅this articlethis follow-up discussion。不要重新发明*,也不要认为处理两者的单一命令必然会比其他解决方案更有效率。

如果我理解正确,你想要一个查询,做表中的所有记录的计数,并在同一时间只获得50行。 你可以做到这一点是这样的:

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

个人而言,我更愿意执行两个查询。一个用于计数,另一个用于前50行(效率更高的IMo)

+0

请参阅编辑1 – Arian