Mysql 仅从两个表查询中选择顶部结果

Mysql 仅从两个表查询中选择顶部结果,mysql,sql,relational-database,Mysql,Sql,Relational Database,这是我的两张桌子: 歌曲: 投票: +--------+--------+ | SongID | UserID | +--------+--------+ | 3278 | 71 | | 3278 | 72 | | 3279 | 71 | +--------+--------+ 我试图计算投票数表中的条目数(对于每个唯一的SongID),并返回包含最多的条目的SongDeviceID 这就是我到目前为止所做的: SELECT Songs.SongDevice

这是我的两张桌子:
歌曲:

投票:

+--------+--------+
| SongID | UserID |
+--------+--------+
|   3278 |     71 |
|   3278 |     72 |
|   3279 |     71 |
+--------+--------+
我试图计算
投票数
表中的条目数(对于每个唯一的
SongID
),并返回包含最多的条目的
SongDeviceID

这就是我到目前为止所做的:

SELECT Songs.SongDeviceID, COUNT(*) FROM Votes INNER JOIN Songs ON Votes.SongID = Songs.SongId GROUP BY Votes.SongID, Songs.SongDeviceID ORDER BY count(*) DESC
返回:

+---------------------+----------+
|    SongDeviceID     | Count(*) |
+---------------------+----------+
| 1079287588763212246 |        2 |
| 1079287588763212221 |        1 |
+---------------------+----------+
更新: 查询已更新,以获取SongDeviceID,但我仍然需要帮助,只返回第一行。

第一行

select top 1
    S.SongDeviceID, COUNT(distinct V.UserID) as 'UserVotes'
from
   Songs as S
join 
  Votes as V on V.SongID = S.SongID
group by
   S.SongDeviceID
order by
  UserVotes DESC
SELECT  SongID,COUNT(*) from votes GROUP BY SongID order by count(*) DESC LIMIT 1
然后你想要歌曲设备名

SELECT SongID,COUNT(*),SongDeviceID
from
  votes 
left join 
   Songs on votes.songid = song.songid
GROUP BY
   SongID 
order by 
   count(*) DESC LIMIT 1
试试这个

   SELECT Songs.SongDeviceID, COUNT(*) FROM Votes INNER JOIN Songs ON Votes.
    SongID =  Songs.SongId GROUP BY Votes.SongID, Songs.SongDeviceID ORDER BY count(*) 
    DESC LIMIT 1

您不能使用订单计数(*)desc limit by 1
您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解第1行“by 1”附近使用的语法是否正确
您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在“1 S”附近使用的语法是否正确。SongDeviceID,COUNT(不同的V.UserID)作为歌曲中的“用户投票”,S在第1行加入V
   SELECT Songs.SongDeviceID, COUNT(*) FROM Votes INNER JOIN Songs ON Votes.
    SongID =  Songs.SongId GROUP BY Votes.SongID, Songs.SongDeviceID ORDER BY count(*) 
    DESC LIMIT 1