2013-07-25 17 views
12

wiem w DB2 (przy użyciu wersji 9.7) można wybrać pierwsze 10 wierszy z tabeli za pomocą tej kwerendy:pobierania wiersze w DB2

SELECT * 
FROM myTable 
ORDER BY id 
FETCH FIRST 10 ROWS ONLY 

Ale jak mogę uzyskać, na przykład, wiersze 11 do 20? Nie mogę użyć klucza głównego ani identyfikatora, aby mi pomóc ...

Z góry dziękuję!

+0

bez wyraźnego celu nie ma gwarancji, że będzie za każdym razem pobieraj te same 10 wierszy. Musisz dodać "ORDER BY" do zapytania. – mustaccio

+0

Masz rację. Właśnie zaktualizowałem moje zapytanie. Dzięki za wskazanie tego! –

Odpowiedz

11

Oto przykładowe zapytanie że dostanie wiersze z tabeli zawierać nazwy państwa, skróty itp

SELECT * 
FROM (
    SELECT stabr, stname, ROW_NUMBER() OVER(ORDER BY stname) AS rownumber 
    FROM states 
    WHERE stcnab = 'US' 
) AS xxx 
WHERE rownumber BETWEEN 11 AND 20 ORDER BY stname 

Edit: ORDER BY jest konieczne, aby zagwarantować, że numeracja rząd jest zgodny między egzekucje pytanie.

+0

Tak, wykonał zadanie. Dzięki! –

1

Można również użyć zgodności z MYSQL. Musisz tylko aktywować kompatybilność wektorową dla MYS, a następnie użyć Limit i Offset w swoich zapytaniach.

db2set DB2_COMPATIBILITY_VECTOR=MYS 
db2stop 
db2start