2011-08-17 14 views
6

Powiel możliwe:
Mysql Offset Infinite rowsMYSQL uzyskać wszystkie wyniki, ale najpierw

Próbuję uzyskać wszystkie wyniki dla zapytania, ale nie pierwszy, mam następujący ale jego dawanie mi błąd, proszę o pomoc; dzięki.

SELECT DISTINCT `memberID` FROM `discusComments` 
WHERE `topicID` = 4 ORDER BY `id` DESC OFFSET 1 
+1

jaki komunikat błędu otrzymujesz? –

+3

Zobacz http://stackoverflow.com/questions/255517/mysql-offset-infinite-rows. Nie można użyć opcji "PRZESUNIĘCIE" bez 'LIMIT'. – Rob

Odpowiedz

13
SELECT DISTINCT `memberID` 
FROM `discusComments` 
WHERE `topicID` = 4 
ORDER BY `id` 
DESC limit 1,x 

gdzie x to numer na tyle wielkie, że zawiera wszystkie rekordy.

lub użyj, zamiast x, 18446744073709551615, która jest maksymalną wartością bigint unsigned.

2

Zignoruj ​​pierwszy wiersz po otrzymaniu wyników w aplikacji. Jest o wiele ładniejszy niż przy użyciu brzydkiego zapytania, takiego jak:

SELECT * FROM my_table LIMIT 1, 18446744073709551615 

Zdobycie dodatkowego rzędu nie zaszkodzi Twojemu występowi.

+0

Nie zgodziłbym się, najlepiej jest po prostu zwrócić pierwszy wiersz, gdy pytanie poprosiło o jego usunięcie ... jest tak samo czysty, jak metody usuwania pierwszego wiersza. Istnieje również wiele przypadków, w których dane wiersza mogą być wystarczająco duże, aby nie przenieść go z serwera do aplikacji, np. dane przechowywane w obiekcie BLOB – Barry

Powiązane problemy