1

我正在使用 MSSQL 2005 进行查询,例如:

SELECT * from Emp UNION ALL SELECT * from Emp2;

我想将最终结果限制为 10 行。如果我只有 Emp 表,我会说

SELECT TOP 10 * from Emp;

但是由于我现在有 2 个表,我不能在其中任何一个上说 SELECT TOP *,最后我也不能使用 LIMIT 10。你有什么建议吗?

4

4 回答 4

8
SELECT TOP 10 * FROM
(SELECT * from Emp UNION ALL SELECT * from Emp2) a

但是,我建议您对结果进行排序,这样您就不会从第一个联合结果中获得前 10 个结果。所以可能是这样的:

SELECT TOP 10 * FROM
(SELECT * from Emp UNION ALL SELECT * from Emp2) a
ORDER BY a.lastName
于 2012-08-01T15:09:39.863 回答
2

try this:

SELECT TOP 10 * 
FROM  (
         SELECT * 
         FROM Emp 
          UNION ALL 
         SELECT * 
         FROM Emp2
      ) derivedTable
于 2012-08-01T15:11:41.650 回答
2

尝试这个:

SELECT top 10 * from (
    SELECT * from Emp UNION ALL SELECT * from Emp2) a
于 2012-08-01T15:09:45.723 回答
1

使 UNIONed 查询成为子查询,并从中选择 TOP 10 行:

SELECT TOP 10 * FROM (
    SELECT * FROM Emp
    UNION ALL
    SELECT * FROM Emp2
) unioned
于 2012-08-01T15:11:00.103 回答