数据库
首页 > 数据库> > mysql:如何INNER JOIN表,但限制联接到具有最高投票或计数的1结果?

mysql:如何INNER JOIN表,但限制联接到具有最高投票或计数的1结果?

作者:互联网

我有2张桌子.一个是项目,另一个是这些项目的投票.

Items table has: |item_id|name|post_date
Votes table has: |votes_id|item_id|answer|total_yes|total_no

我想做的是显示所有基于post_date的项目,并在投票表中以最高total_yes显示答案.因此,我只想显示total_yes投票最高的投票表中的单个答案.

我正在尝试:

SELECT a.*, b.* FROM Items a
INNER JOIN Votes b ON a.item_id = b.item_id
GROUP by a.item_id
ORDER by a.post_date DESC, b.total_yes DESC

但这不起作用.

我想看到的结果是:

<item><answer><yes votes>
Buick | Fastest | 2 yes votes
Mercedes | Shiny | 32 yes votes
Honda | Quick | 39 yes votes

任何帮助表示赞赏!

解决方法:

SELECT a.*, b.*
  FROM Items a
       LEFT JOIN Votes b on a.item_id = b.item_id
                         and b.total_yes = (select max(total_yes) 
                                              from Votes v 
                         where v.item_id = a.item_id)
ORDER BY a.post_date DESC, b.total_yes DESC

N.B .:如果您有2个答案,且答案相同,且total_yes = max,则该项目将有2行.

标签:mysql,inner-join
来源: https://codeday.me/bug/20191013/1905571.html