Varför fungerar inte den här SELECT när jag lägger till "LIMIT 0,50"? För att LIMIT är specifikt för mySQL, finns inte i SQL Server. Aha, är det så... Du menar paging? I så fall får du använda en cursor som du skriver i en lagrad procedur. Enklare är kanske att öppna ditt recordset på ett annorlunda sätt, se asp artiklar (paging). select top 50 * En cursor är ett dumt alternativ. Mycket bättre att isf antingen göra nästlade TOP-satser som Johan föreslog (och kan ses mer på min site www.hedgate.net under SQL Server tips), eller att skicka in det senaste högsta värdet till proceduren. Typ så här:LIMIT problem, finns det något liknade i SQL-server?
<code>"SELECT *, convert(nvarchar(16), [datum], 20) AS Datum FROM NoNHQForum where ReadID = 0 ORDER BY Senastesvar DESC LIMIT 0, 50"</code>
Jag får det här felmedellande:
Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near 'LIMIT'.
Tack på förhand!Sv: LIMIT problem
I ditt fall kan du använda TOP istället.
SELECT TOP 50 * .....Sv: LIMIT problem
Hur ska jag med kunna ta ut bara 50poster från databasen och inte behöva gå igen hela? vi säger att jag vill börja på 0 till 50 och sen vill jag frotsätta på 50 och 50 framåt på nästa sida?Sv: LIMIT problem
Hälsningar
/PelleSv: LIMIT problem
from table
where id not in(select top 50 id from table order by a)
order by a
ger 51 -> 100
/johan/Sv: LIMIT problem
CREATE PROC foo
@lastmax int
AS
BEGIN
SELECT TOP 50 *
FROM FOOBAR
WHERE fooid > @lastmax
ORDER BY fooid ASC
END
Sedan är det bara att exekvera denna procedur med 0 som inparameter första gången, därefter tar man det högsta värdet man fick tillbaka förra gången och skickar det som inparameter så får man de 50 högsta förutom det.
Att göra paging i ASP-sidan är inte heller ett bra alternativ, eftersom det kräver att man skickar ut hela resultatet från SQL Server bara för att presentera en liten del av det. Inte kul om det är ett stort resultat.