MySQL语法错误: unexpected 'unique'

标签 mysql sql relational-database

我有以下查询:

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)

最佳答案

您需要计算用户投票的相册中的不同数字。为此,还要加入歌曲表。

唯一不清楚的是,您如何知道用户是否对歌曲进行了投票?投票是是/否栏吗?如果是这样,您可能必须更改聚合。

select u.UserName, count(distinct v.Number) as total 
--count(distinct case when v.vote = 'yes' then 1 end) as total
--use this if vote is a yes/no column.
from Voting v
join `User` u on u.userid=v.userid
join Song s on s.AlbumID=v.AlbumID and s.Number=v.Number
group by u.UserName
order by total desc

关于MySQL语法错误: unexpected 'unique' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39774528/

相关文章:

mysql - Visual Studio 2017无法加载MySQL数据库

mysql - SSRS 在数据集中的单个列上选择不同

sql - 我该如何解决 "Either the parameter @objname is ambiguous or the claimed @objtype (COLUMN) is wrong."?

SQL 将一列中的字符串部分与另一列匹配

mysql - 如何知道插入行的ID

mysql - MySQL 关系划分(IN AND 而不是 IN OR)实现的性能差异是什么?

php - 如何使用 PHP 从 MySQL 数据库中读取几何数据类型

mysql - 将值从一个表添加到另一个表,匹配特定条件

mysql - 外键 - 子父关系

mysql - 复制不安全的函数