我正在使用 MSSQL 2005 进行查询,例如:
SELECT * from Emp UNION ALL SELECT * from Emp2;
我想将最终结果限制为 10 行。如果我只有 Emp 表,我会说
SELECT TOP 10 * from Emp;
但是由于我现在有 2 个表,我不能在其中任何一个上说 SELECT TOP *,最后我也不能使用 LIMIT 10。你有什么建议吗?
我正在使用 MSSQL 2005 进行查询,例如:
SELECT * from Emp UNION ALL SELECT * from Emp2;
我想将最终结果限制为 10 行。如果我只有 Emp 表,我会说
SELECT TOP 10 * from Emp;
但是由于我现在有 2 个表,我不能在其中任何一个上说 SELECT TOP *,最后我也不能使用 LIMIT 10。你有什么建议吗?
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
try this:
SELECT TOP 10 *
FROM (
SELECT *
FROM Emp
UNION ALL
SELECT *
FROM Emp2
) derivedTable
尝试这个:
SELECT top 10 * from (
SELECT * from Emp UNION ALL SELECT * from Emp2) a
使 UNIONed 查询成为子查询,并从中选择 TOP 10 行:
SELECT TOP 10 * FROM (
SELECT * FROM Emp
UNION ALL
SELECT * FROM Emp2
) unioned