2012-05-03 15 views

Odpowiedz

10

LIMIT nie działa w języku T-SQL.

Musisz zamiast używać wierzchu, tak:

SELECT TOP(1) * FROM tableEating WHERE person='$identity'; 

Mam nadzieję, że będzie pracować dla Ciebie.

Jak mówi Aaron, potrzebujesz również ORDER BY, jeśli nie chcesz uzyskać dowolnego rzędu.

+0

Działa jak urok! Dzięki ! – bilbaoWon

+3

Po prostu zauważ, że bez "ORDER BY" dostaniesz arbitralny wiersz, a to może się zmienić z wykonania na wykonanie ... –

0

LIMIT nie działa, a TOP(1) może również nie działać w zagnieżdżonych instrukcjach.

Dlatego właściwym podejściem jest użycie OFFSET... FETCH NEXT:

SELECT * FROM TableName 
OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY 

że w zasadzie mówi TSQL wziąć jeden wiersz (NEXT 1 ROWS ONLY) począwszy od pierwszego (OFFSET 0).

+0

Dlaczego mówisz, że 'Top (1)' może nie działać w zagnieżdżonej instrukcji ? Ciekawi mnie to, czy mógłby pan opracować? – user69513

+0

Nie jestem pewien, ale widzę, że jest tutaj omawiany również https://stackoverflow.com/questions/29358682/sql-top-1-syntax-for-a-nested-query – K48