webForumDet fria alternativet

SELECT DISTINCT

3 svar · 211 visningar · startad av Andy

AndyMedlem sedan sep. 2001138 inlägg
#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?

SPiNMedlem sedan mars 20005 832 inlägg
#2

Jag kan vara ute och cykla, men:

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

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

aasahMedlem sedan mars 20033 451 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;

Genererad på 394 ms · cache AV · v20260730165559-full.f96bc7eb