webForumDet fria alternativet
Logga in / Bli medlem

Exsist??

Databaser & SQL

3 svar · 243 visningar · startad av Gladh

Medlem sedan maj 20012 812 inlägg
Trådstart#1

Tja!

Jag har följande SQL sats som fungerar nästan så som jag vill:

SELECT XceptionId, MessageId, LogMessageDateTime, ApplicationName, ExceptionMessageString, LogLevelId 
	FROM message m1 
	WHERE messageId IN(
		SELECT Top 200 Min(MessageId) as MessageId
			FROM dbo.Message m2
			WHERE LogLevelId <= 20 AND LogMessageDateTime BETWEEN '2005-05-17 04:06:09' AND '2005-05-24 10:07:10' 
			GROUP BY XceptionId 
			ORDER BY MessageId DESC
	) 
	ORDER BY LogMessageDateTime DESC

Problemet är bara att sorteringen på MessageId inte är riktigt korrekt, utan jag skulle hellre vilja göra en ORDER BY på LogMessageDateTime DESC istället för MessageId, då kan jag inte använda IN utan skall använda Exists istället, det har jag testa en lite stund nu och jag kan inte få till frågan så att det returneras "samma resultat".

Någon som är haj på Exists och kan hjälpa till?

- M

Medlem sedan juni 200032 967 inlägg
#2

Varför kan du inte sortera på LogMessageDateTime om du använder IN() menar du?

Medlem sedan maj 20012 812 inlägg
#3

Så fall måste LogMessageDateTime finnas med i min GroupBy vilket inte är så smart då det iprincip ger mig alla rader eftersom LogMessageDateTime nästan är unikt per rad.

Alternativt så måste det finnas med som en aggrigerade funktion i selecten, men då kan man inte använda IN eftersom IN endast kan motaga data från 1 kolumn och den kolumn som jag vill ha data ifrån är messageId.

- Magnus

Medlem sedan juni 200032 967 inlägg
#4

Aha, du menar att du ville sortera på det fältet i din subquery, det förstod jag inte. Sorry för missuppfattningen!

266 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)