0
我有以下查詢:MySQL的語法錯誤:意外「獨一無二」
select u.UserName, count(*) as total
from Voting v join User u using (UserID)
where unique (select s.AlbumID, s.Number from Song s where s.AlbumID=v.AlbumID and s.Number=v.Number)
group by u.UserName
order by total desc;
這應該做到以下幾點:爲每個用戶,顯示該用戶名和歌曲的用戶投票數。如果沒有where unique (...)
這一行,這可以正常工作,但我希望同一首歌的投票不會被計爲多次投票,並且我不太確定如何執行此操作,因爲該行會產生語法錯誤(並且我的教科書中提到你可以這樣做:-))。
的模式是這樣的:
table Album(AlbumID(PK), AlbumName)
table Song((Number,AlbumID)(PK), SongName)
table User(UserID(PK), UserName)
table Voting((UserID,AlbumID,Number)(PK),Vote,Date)
但是,就我而言,歌曲是由AlbumID和該專輯上的數字定義的。如果我正確理解了這一點,則不會計算在不同專輯中具有相同編號的歌曲的投票數。我可以將* distinct *用於AlbumID和Number嗎?類似* count(不同v.Number,v.AlbumID)*?附: *投票*是一個數字:) – Eutherpy
你可以發佈一些示例數據或設置一個sql小提琴嗎?使用'count(distinct v.Number,v.AlbumID)'是無效的。 –
其實我意識到一個用戶**不能**因爲*投票*中的PK而多次爲同一首歌曲投票:所以我想我沒有問題。但是,你仍然幫助* count(distinct ...)*。 – Eutherpy