Je suis intéressé par l'apprentissage de méthodes (idéalement) agnostiques par rapport à la base de données pour sélectionner l'image de la base de données. n d'une table de base de données. Il serait également intéressant de voir comment cela peut être réalisé en utilisant la fonctionnalité native des bases de données suivantes :
- SQL Server
- MySQL
- PostgreSQL
- SQLite
- Oracle
Je fais actuellement quelque chose comme ce qui suit dans SQL Server 2005, mais je serais intéressé de voir les approches plus agnostiques des autres :
WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders)
SELECT *
FROM Ordered
WHERE RowNumber = 1000000
Crédit pour le SQL ci-dessus : Le blog de Firoz Ansari
Mise à jour : Voir La réponse de Troels Arvin concernant la norme SQL. Troels, avez-vous des liens que nous pouvons citer ?
3 votes
Oui. Voici un lien vers des informations sur la norme ISO SQL : troels.arvin.dk/db/rdbms/links/#standards
17 votes
Je tiens à préciser que, selon la définition d'une relation, les lignes d'un tableau n'ont pas d'ordre, de sorte que la Nième ligne d'un tableau ne peut pas être sélectionnée. Ce qui peut être sélectionné est la Nième ligne d'un ensemble de lignes retourné par (le reste de) une requête, ce qui est ce que votre exemple et toutes les autres réponses accomplissent. Pour la plupart des gens, il s'agit d'une simple question de sémantique, mais elle met en évidence le problème sous-jacent de la question. Si vous avez besoin de retourner
OrderNo N
puis introduire un N° de séquence de commande dans le tableau et le générer à partir d'un générateur de séquence indépendant lors de la création d'une nouvelle commande.2 votes
La norme SQL définit l'option
offset x fetch first y rows only
. Actuellement supporté par (au moins) Postgres, Oracle12, DB2.