Jag kan vara ute och cykla, men:
SELECT TOP 10 DISTINCT(SearchWords) FROM tableSearches ORDER BY ID DESC
3 svar · 213 visningar · startad av Andy
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?
Jag kan vara ute och cykla, men:
SELECT TOP 10 DISTINCT(SearchWords) FROM tableSearches ORDER BY ID DESC
Verkar inte fungera, tyvärr... TOP 10 måste stå efter DISTINCT
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;