UNION获得的行的前10个结果

时间:2012-08-01 15:08:36

标签: sql sql-server sql-server-2005 union

我使用MSSQL 2005进行查询,比如说:

SELECT * from Emp UNION ALL SELECT * from Emp2;

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

SELECT TOP 10 * from Emp;

但由于我现在有两张桌子,我不能在任何一张桌子上说SELECT TOP *,最后我也不能使用LIMIT 10。 你有什么建议吗?

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

试试这个:

SELECT top 10 * from (
    SELECT * from Emp UNION ALL SELECT * from Emp2) a

答案 2 :(得分:2)

试试这个:

SELECT TOP 10 * 
FROM  (
         SELECT * 
         FROM Emp 
          UNION ALL 
         SELECT * 
         FROM Emp2
      ) derivedTable

答案 3 :(得分:1)

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

SELECT TOP 10 * FROM (
    SELECT * FROM Emp
    UNION ALL
    SELECT * FROM Emp2
) unioned