webForumDet fria alternativet
Logga in / Bli medlem

SELECT DISTINCT

Databaser & SQL

3 svar · 213 visningar · startad av Andy

Medlem sedan sep. 2001138 inlägg
Trådstart#1

Har en tabell med massor av ord besökare har sökt efter på min site (varje sökning sparas i databasen).

Nu vill jag visa de tio senaste, unika, sökningarna, och skrev därför ihop en SQL-sats som ser ut så här:

SELECT DISTINCT TOP 10 SearchWords FROM tableSearches ORDER BY ID DESC

Men då får jag ett meddelande som säger att ID-kolumnen, som är en räknare, måste finnas med i selecten. Men om jag tar med den, så här:

SELECT DISTINCT TOP 10 SearchWords, ID FROM tableSearches ORDER BY ID DESC

Så returnerar den ju dubletter.

Hur gör jag?

Medlem sedan mars 20007 896 inlägg
#2

Jag kan vara ute och cykla, men:

SELECT TOP 10 DISTINCT(SearchWords) FROM tableSearches ORDER BY ID DESC
Medlem sedan sep. 2001138 inlägg
#3

Verkar inte fungera, tyvärr... TOP 10 måste stå efter DISTINCT

Medlem sedan mars 20034 471 inlägg
#4

Det är klart att du inte kan ordna svaret efter en kolumn som du inte plockar ut. Hur skulle det gå till?

Följande kan kanske funka:

CREATE VIEW tmp(word, antal) as
SELECT SearchWords, count(ID) FROM tableSearches
GROUP BY SearchWords;

SELECT words FROM tmp
WHERE antal in
(SELECT TOP 10 antal FROM tmp);

DROP VIEW tmp;

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