Fonction (function) LIMIT MS SQL (Microsoft SQL Serveur)

Oui alors les débiles profont de chez Microsoft, qui n'ont toujours rien compris à la vie, comme d'ab n'ont pas pensé à implémenter la fonction Limit.
Vous savez cette fonction très pratique sous MySQL pour afficher les résultats entre deux valeurs (records).
Exemple, afficher le contenu entre le 10ème et le 20ème record dans la base.
C’est vrais que c’est pas utile, du tout !!!

 

Donc sous Mysql, on ferais bêtement un

SELECT * FROM MaTable Limit 10,20
Qui afficheront les donnée entre la position 10 à la position 20 (10,11,12,13,14,15,16,17,18,19)

Bah sous MSSQL, ils ont jugé que c'était pas pratique, nous limitant a la fonction TOP (qui permet d'afficher uniquement les X premier résultat.)
Donc
SELECT TOP 10 * (affiche les résulats 0 à 9), ou SELECT TOP 20 * (0 à 19 etc...).
Mais impossible par une fonction toute intégrée de lui dire d'afficher ce qu'il y a entre 10 et 20.

Il faut donc pour cela, "détourner le problème" en imbriquant des "SELECT".

Exemple : 

SELECT TOP 10 * From MaTable
where iddata  NOT IN
(SELECT TOP 20 iddata from MaTable ORDER By LaDate DESC)
ORDER BY LaDate DESC;


Explication :
SELECT TOP 10 <= 10 étant le nombre de ligne à extraire.
SELECT TOP 20 <= La position ou partir.

Notre exemple, retourne donc les lignes entre le records 20 et 30 (20,21,22,23,24,25,26,27,28,29)

 Il est important de se basé sur une valeur unique, comme l'id (dans notre exemple, l'iddata) du record, afin que la requête fonctionne.

 

 

Autre solution trouvée sur le net (Merci Alex)
select * from (
 select top 10 emp_id,lname,fname from (
    select top 30 emp_id,lname,fname
    from employee
   order by lname asc
 ) as newtbl order by lname desc
) as newtbl2 order by lname asc

TAG : MSSQL MYSQL LIMIT TOP SELECT


Publié le 03 Avril 2007 par luca | Ecouter l'article

Publié dans : Programmation

Accueil Précédent Suivant