Avatar billede petermonielsen Nybegynder
15. juni 2011 - 14:05 Der er 13 kommentarer og
1 løsning

top 10 nyeste unikke rækker

Hej - hvordan laver jeg en forespørgsel som returnerer de 10 nyeste rækker fra en tabel, hvor agencyId skal være unik.

tabellens navn er: AgentLog

tabellens kolonner er:

id (int)
agentId (int)
agentNavn (varchar)
logdetaljer(varchar)
Avatar billede Syska Mester
15. juni 2011 - 14:46 #1
Du kan gøre noget ala følgende:
SELECT * FROM ImportLogs t1
INNER JOIN
(
SELECT TOP 10 MAX(ImportLogId) AS [Id] FROM ImportLogs
GROUP BY SID
ORDER BY [Id] DESC
) AS t2
ON t2.Id = t1.ImportLogId

Den midterste SELECT bliver lavet for at finde dit Incremental ID og stadig være sikker på "AgentId", ved mig "SID" er unik. Derefter lave en sort på ImportLogId, så det er nyeste vi kun får med. Ud af den query før vi de ID's vi skal have ud, og det gør vi ved en simpel join på det ID tilbage til sig selv.

mvh
Avatar billede Syska Mester
15. juni 2011 - 14:52 #2
Den kan også skrives somen CTE:
WITH cte (Id)
AS
(
SELECT MAX(ImportLogId) AS [Id] FROM ImportLogs
GROUP BY SID
)
SELECT TOP 10 * FROM ImportLogs L
INNER JOIN cte AS C ON C.Id = L.ImportLogId
ORDER BY L.ImportLogId DESC
Avatar billede hrc Mester
15. juni 2011 - 15:09 #3
Noget i den retning?

select *
from dbo.AgentLog
where id in (select max(id)
            from dbo.AgentLog
            group by agentid)
order by agentid


Jeg har en anelse om at den yder ret dårligt men du må tjekke SSMS' "execution plan" desangående (den bør man lære sig).
Avatar billede hrc Mester
15. juni 2011 - 15:11 #4
(hvorfor kommer jeg aldrig først?)
Avatar billede Syska Mester
15. juni 2011 - 15:34 #5
hahah, du skal bare have dit mail program åbent 24/7 ... så skal man nok komme først. En anden god ting er at sikre sig at Arne_v sover :-P

mvh
Avatar billede hrc Mester
15. juni 2011 - 17:29 #6
Hvordan får man Arne til at sove? Jeg har en forestilling om at han er Ekspertens svar på "The Stig".
Avatar billede hrc Mester
15. juni 2011 - 17:30 #7
(er det nok at proppe ham inde i et skab?)
Avatar billede Syska Mester
15. juni 2011 - 18:20 #8
Han er nok mere Stackoverflow's svar på John Skeet ... han er der også hele tiden.
Avatar billede arne_v Ekspert
16. juni 2011 - 00:18 #9
Jeg gaar ikke med styrthjelm og jeg sover normalt 23-06 lokal tid, hvilket er 05-12 dansk tid!
Avatar billede hrc Mester
16. juni 2011 - 07:48 #10
Det siger "The Stig" garanteret også, men der er ikke nogen der tror på ham... :-) Hej Arne. Det er en spøg, et spin-off af min mærkelige humor, men det er absolut positivt ment. Du har om nogen været med til at holde ekspertens svar på et højt niveau.
Avatar billede hrc Mester
16. juni 2011 - 07:51 #11
.. så jeg håber ikke du er fornærmet (over there; troede du sad i Århus). Men, Buzzzz. Det betyder vi har et "vindue" indtil kl. 12
Avatar billede petermonielsen Nybegynder
16. juni 2011 - 09:03 #12
tak for hjælpen - buzz du kom vist først - lægger du et svar.
Avatar billede Syska Mester
16. juni 2011 - 16:28 #13
svar til petermonielsen.

Jeg kigger nu også efter at svare lidt på StackOverflow, men det er jo en helt anden verden derinde. Shit der bliver lagt energi i de svar.

Nej, Arne_v er i staterne, men håber han er fra danmark ( Læs: Århus ) og ikke nogen af de afstikker ø'er, øst for danmark.
Avatar billede arne_v Ekspert
20. juni 2011 - 00:18 #14
Jeg ved ikke om jeg kan kaldes jyde længere.

Jeg har boet mange steder.

Hornum (nær Års) - 17 år
Tandrup (mellem Farsø og Trend) - 1 år
Århus - 8 år
Kolding - 5 år
Solrød Strand (syd for København) - 1 år
Vanløse (København) - 4 år
Kirke Såby (mellem Holbæk og Roskilde) - 5 år
Cranston (udenfor Providence på USA's østkyst) - 5 år
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester