SELECT TOP(@PARAM) FROM TABLE ORDER BY COLUMN
Wykorzystamy klauzylę TOP wraz z ORDER BY PRIMARY_KEY DESC(majejąco), aby wybrać N-wierszy spośród tabeli. Zatem utwórzmy przykładową tabelę:
CREATE TABLE [dbo].[Sonda]( [SondaId] [int] IDENTITY(1,1) NOT NULL, [Typ] [bit] NOT NULL, [Tytul] [nvarchar](256) NOT NULL, [Widocznosc] [bit] NOT NULL, [Dodano] [datetime] NOT NULL, [KtoDodal] [nvarchar](256) NOT NULL, [MaxOdpowiedzi] [int] NOT NULL, CONSTRAINT [PK_Sonda] PRIMARY KEY CLUSTERED ( [SondaId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GOTeraz wstawimy 10 rekordów
INSERT INTO Sonda(Typ,Tytul,Widocznosc,Dodano,KtoDodal,MaxOdpowiedzi) VALUES (0,'Testowa sonda 1',0,GETDATE(),'admin',25) INSERT INTO Sonda(Typ,Tytul,Widocznosc,Dodano,KtoDodal,MaxOdpowiedzi) VALUES (0,'Testowa sonda 2',0,GETDATE(),'admin',25) INSERT INTO Sonda(Typ,Tytul,Widocznosc,Dodano,KtoDodal,MaxOdpowiedzi) VALUES (0,'Testowa sonda 3',0,GETDATE(),'admin',25) INSERT INTO Sonda(Typ,Tytul,Widocznosc,Dodano,KtoDodal,MaxOdpowiedzi) VALUES (0,'Testowa sonda 4',0,GETDATE(),'admin',25) INSERT INTO Sonda(Typ,Tytul,Widocznosc,Dodano,KtoDodal,MaxOdpowiedzi) VALUES (0,'Testowa sonda 5',0,GETDATE(),'admin',25) INSERT INTO Sonda(Typ,Tytul,Widocznosc,Dodano,KtoDodal,MaxOdpowiedzi) VALUES (0,'Testowa sonda 6',0,GETDATE(),'admin',25) INSERT INTO Sonda(Typ,Tytul,Widocznosc,Dodano,KtoDodal,MaxOdpowiedzi) VALUES (0,'Testowa sonda 7',0,GETDATE(),'admin',25) INSERT INTO Sonda(Typ,Tytul,Widocznosc,Dodano,KtoDodal,MaxOdpowiedzi) VALUES (0,'Testowa sonda 8',0,GETDATE(),'admin',25) INSERT INTO Sonda(Typ,Tytul,Widocznosc,Dodano,KtoDodal,MaxOdpowiedzi) VALUES (0,'Testowa sonda 9',0,GETDATE(),'admin',25) INSERT INTO Sonda(Typ,Tytul,Widocznosc,Dodano,KtoDodal,MaxOdpowiedzi) VALUES (0,'Testowa sonda 10',0,GETDATE(),'admin',25) GO
Skoro mamy już tabelę i rekordy to nadszedł czas na procedurę, która pobierze ostatnio dodane wiersze:
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[Sonda_GetSondaBottom] @Limit int AS BEGIN SET NOCOUNT ON; SELECT top (@Limit) * FROM Sonda ORDER BY SondaId DESC END
Na koniec przetestujemy naszą procedurę:
EXEC [dbo].[Sonda_GetSondaBottom] @Limit = 10
Post zainspirowany tekstem: http://particletree.com/notebook/select-last-100-records/
0 comments:
Post a Comment