Est-il possible de sélectionner, par exemple, les 10 premières lignes d'une table dans T-SQL (MSSQL actif)?
Je pense avoir vu quelque chose dans Oracle défini comme une variable méta rownum, utilisée de la manière suivante
sélectionnez * parmi Utilisateurs où rownum <= 10Mais qu'en est-il de MSSQL?
select top(@count) * from users
Si @count
est une constante, vous pouvez supprimer les parenthèses:
select top 42 * from users
(le dernier fonctionne aussi sur SQL Server 2000, alors que le premier nécessite au moins 2005)
SELECT TOP 10 *
FROM Users
Notez que si vous ne spécifiez pas de clause ORDER BY
, toutes les 10 lignes peuvent être renvoyées, car les "10 premières lignes" ne signifient rien avant que vous indiquiez à la base de données quel ordre utiliser.
Vous pouvez utiliser la fonction row_number () de Microsoft pour décider des lignes à renvoyer. Cela signifie que vous n'êtes pas limité aux seuls X meilleurs résultats, vous pouvez prendre des pages.
SELECT *
FROM (SELECT row_number() over (order by UserID) AS line_no, *
FROM dbo.User) as users
WHERE users.line_no < 10
OR users.line_no BETWEEN 34 and 67
Cependant, vous devez imbriquer la requête d'origine, car sinon, vous obtiendrez un message d'erreur vous indiquant que vous ne pouvez pas faire ce que vous voulez comme vous devriez pouvoir le faire dans un monde idéal.
Msg 4108, Level 15, State 1, Line 3
Windowed functions can only appear in the SELECT or ORDER BY clauses.
Vous pouvez également utiliser rowcount, mais TOP est probablement meilleur et plus propre, d’où le vote favorable de Mehrdad.
SET ROWCOUNT 10
SELECT * FROM dbo.Orders
WHERE EmployeeID = 5
ORDER BY OrderDate
SET ROWCOUNT 0
Essaye ça.
declare @topval int
set @topval = 5 (customized value)
SELECT TOP(@topval) * from your_database
SÉLECTIONNER LE TOP 10 * FROM TABLE_NAME ORDER BY ORDERED_UNIQUE_COLUMN . DESC
ORDERED_UNIQUE_COLUMN pourrait être votre clé primaire incrémentante ou un horodatage
Essaye ça:
SELECT * FROM USERS LIMIT 10;