On Mon, 21 Jul 2003 15:23:49 +0200, Kasper Birch Olsen wrote:
> hvordan får man så nummer 20 til 40 etc?
Man kan altid benytte sig af en passende stored procedure, men hvis man
gerne vil have noget, der fungerer via ren (MS-)SQL, kan det gøres ved at
"vende op og ned" på nogle result sets et par gange og skære først noget
og siden noget mere fra.
Lad os sige, at man ønsker max 5 rækker efter at de første 10 rækker
er oversprunget. Følgende burde give samme resultater (i en tænkt
tabel, der bl.a. indeholder ISO's numeriske koder og navne for lande):
PostgreSQL:
  SELECT id_numeric,iso_name
  FROM country
  ORDER BY id_numeric ASC
  LIMIT 5 OFFSET 10;
Giver:
   id_numeric |  iso_name
  ------------+------------
           36 | AUSTRALIA
           40 | AUSTRIA
           44 | BAHAMAS
           48 | BAHRAIN
           50 | BANGLADESH
MySQL:
  SELECT id_numeric,iso_name
  FROM country
  ORDER BY id_numeric ASC
  LIMIT 10,5;
Giver:
  +------------+------------+
  | id_numeric | iso_name   |
  +------------+------------+
  |         36 | AUSTRALIA  |
  |         40 | AUSTRIA    |
  |         44 | BAHAMAS    |
  |         48 | BAHRAIN    |
  |         50 | BANGLADESH |
  +------------+------------+
MSSQL:
  SELECT * FROM (
    SELECT TOP 5 * FROM (
      SELECT TOP 5 * FROM (
        SELECT TOP 15 id_numeric, iso_name
        FROM country
        ORDER BY id_numeric ASC -- note ASC!
      ) AS FOO ORDER BY id_numeric DESC -- note DESC!
    ) AS bar
  ) AS baz ORDER BY id_numeric ASC;
Giver:
  ------------+------------+
   id_numeric |  iso_name  |
  ------------+------------+
           36 | AUSTRALIA  |
           40 | AUSTRIA    |
           44 | BAHAMAS    |
           48 | BAHRAIN    |
           50 | BANGLADESH |
  ------------+------------+
Kender nogen de tilsværende queries for Oracle (noget med "SAMPLE"?) og
DB2 (noget med "FIRST"?)?
Irriterende, at SQL-standarden ikke beskriver en syntaks for denne
forespørgselstype. End ikke SQL:200n (som sandsynligvis bliver SQL:2003)
nævner en syntaks, jvf. dokumentet 5wd-02-foundation-2002-08.pdf der er
indeholdt i 
http://www.wiscorp.com/sql/SQL200nFCD.zip
-- 
Greetings from Troels Arvin, Copenhagen, Denmark