J'utilise MSSQL 2005 pour une requête, disons:
SELECT * from Emp UNION ALL SELECT * from Emp2;
Et je veux limiter le résultat final à 10 lignes. Si je n'avais que la table Emp, je dirais
SELECT TOP 10 * from Emp;
Mais puisque j'ai 2 tables maintenant, je ne peux pas dire SELECT TOP * sur aucun d'entre eux, ni je peux utiliser LIMIT 10 à la fin. Avez-vous une suggestion?
SELECT TOP 10 * FROM (SELECT * from Emp UNION ALL SELECT * from Emp2) a
Cependant, je suggérerais peut-être que vous classiez les résultats de sorte que vous n'obtiendriez pas seulement les 10 premiers résultats du premier syndicat. Donc quelque chose comme ça peut-être:
SELECT TOP 10 * FROM (SELECT * from Emp UNION ALL SELECT * from Emp2) a ORDER BY a.lastName
essaye ça:
SELECT TOP 10 * FROM ( SELECT * FROM Emp UNION ALL SELECT * FROM Emp2 ) derivedTable
essaye ça:
SELECT top 10 * from ( SELECT * from Emp UNION ALL SELECT * from Emp2) a
Faites de la requête UNIONed une sous-requête et select les 10 premières lignes de celle-ci:
SELECT TOP 10 * FROM ( SELECT * FROM Emp UNION ALL SELECT * FROM Emp2 ) unioned