2012-01-10 11 views
13

Jak mogę uzyskać tylko 10 rekordów z tabeli, gdzie jest więcej niż 1000 rekordów. Mam tabelę testową z rowid, name, cost.Jak wybrać N rekordów z tabeli w mysql

select name, cost from test; 

tutaj Chcę wybrać tylko pierwszych 10 wierszy i nie chcę wybrać rowid.

Odpowiedz

23

Aby wybrać pierwsze dziesięć rekordów można użyć LIMIT następnie przez liczbę rekordów, których potrzebujesz:

SELECT name, cost FROM test LIMIT 10 

Aby wybrać dziesięć rekordów z określonej lokalizacji, można użyć LIMIT 10, 100

SELECT name, cost FROM test LIMIT 100, 10 

Spowoduje to wyświetlenie rekordów 101-110

SELECT name, cost FROM test LIMIT 10, 100 

To wyświetlania rekordów 11-11 1

Aby upewnić się odzyskać poprawne wyniki, upewnij się, że zamówienia przez wynikami też inaczej zwracane wierszy może być losowo-owski

Możesz przeczytać więcej @http://php.about.com/od/mysqlcommands/g/Limit_sql.htm

+2

Osobiście zawsze używałbym ORDER BY z LIMITEM, aby zagwarantować spójne, powtarzalne wyniki. –

+2

Wierzę, że w twoim drugim przykładzie jest błąd. W moich testach 'LIMIT 10, 100' zwraca 100 rekordów, zaczynając od indeksu 11.' LIMIT 100, 10' zwraca 10 rekordów zaczynających się od indeksu 101. – jatrim

+0

'LIMIT 10' zwraca czasami mniej niż 10 rekordów, więc to nie jest poprawne odpowiedź dla mnie, więc jak mogę wybrać dokładnie 10 rekordów ?, nie mniej i więcej. Użyłem wiersza poleceń do wykonania tego zapytania 'limit', uruchamiam to zapytanie 8 razy na 7 raz, mam 8 rekordów, a nie 10 rekordów. – 151291

5

Należy mieć ORDER BY w przypadku korzystania z LIMIT, aby uzyskać ten sam zestaw rekordów, jeśli wywołasz go dwa razy z rzędu i żadne dane nie uległy zmianie.

więc zrobić coś takiego:

select name, cost 
from test 
order by rowid 
limit 10; 
2
SELECT TOP(10) name, cost FROM test; 
+1

Przeprosiny - przeczytaj mysql jako mssql. – adelphus

0

tego zapytania, można uzyskać pierwsze 10 rekordów.

SELECT nazwisko pracownika, imię_na pracownikowi LIMIT 10;

Powiązane problemy