SELECT TOP 4 * FROM tabell WHERE ID NOT IN
(SELECT TOP 3 ID FROM tabell ORDER BY ID)
ORDER BY ID
Frågor om SQL välkomnas i SQL-forumet.
4 svar · 409 visningar · startad av tomas21
Hej allihop!
Jag har ett litet problem med SQL select som jag inte lyckats lösa.
Säg att jag har dessa rader i en databas. Siffran är id nummret (Counter).
23. Info
37. Info
38. Info
42. Info
44. Info
47. Info
49. Info
51. Info
52. Info
53. Info
Raderna ovan är exakt allting som finns i databasen. Varför id nummret inte är stigande beror på att fält har raderats med databasen (Access databas).
Det jag vill selecta är följande rader 49, 47, 44 och 42. Alltså de första fyra fälten förutom TOP 3. Har försökt ta senaste id nummret-3 och sedan selecta top fyra men det blir ju knas eftersom värdet blir helt fel om man tagit bort vissa fält så att ID nummret inte är stigande. Notera att ID värdena i detta fal är påhittade de kan vara helt annorlunda i verkligheten.
Hur ser SQL satsen ut för mitt problem?
SELECT TOP 4 * FROM tabell WHERE ID NOT IN
(SELECT TOP 3 ID FROM tabell ORDER BY ID)
ORDER BY ID
Frågor om SQL välkomnas i SQL-forumet.
Ett annat sätt att göra det på som ska vara lite mer effektivt.
SELECT TOP 4 * FROM (
SELECT TOP 7 * FROM tabell
ORDER BY ID DESC
) AS x
ORDER BY ID
Kräver dock att man först kollar upp hur många rader tabellen har.
Flyttas från ASP.