MySQL 计数并加入以返回有序列表

Posted

技术标签:

【中文标题】MySQL 计数并加入以返回有序列表【英文标题】:MySQL count and join to return ordered list 【发布时间】:2015-02-11 22:45:09 【问题描述】:

我在加入时遇到问题。我在这里查看了几个答案,但似乎无法将其应用于我的特定问题。

我有两张桌子:

带有iduser_IPitem_id 列的likes 表。

一个auctions 表,其中包含许多列,包括idtitlesubtitlelocationauctions 表中的id 列引用likes 表中的item_id

我可以使用以下代码获得按 item_id 计数排序的点赞列表:

选择喜欢.item_id,计数(喜欢.item_id) 来自喜欢 GROUP by likes.item_id ORDER by count(likes.item_id) DESC

我需要的是让列表按最喜欢的顺序显示所有拍卖(每个拍卖的标题、副标题和位置)。我尝试了一些我在这里找到的东西,例如下面的代码,它给出了一个语法错误,我无法产生我需要的输出。

SELECT likes.item_id, count(likes.item_id), pqc9_auctions.* 加入喜欢 WHERE likes.item_id = pqc9_auctions.id GROUP by likes.item_id ORDER by count(likes.item_id) DESC

我认为这很可能非常简单,但在过去的几个小时里,我一直对此持怀疑态度。任何帮助将不胜感激。

【问题讨论】:

考虑将语法错误消息添加到您的问题中。 @Jeffrey Bosboom - 好吧,我只是通过粘贴上面的代码来查询它,它没有给出错误它只是什么都不返回。不知道为什么,因为我没有改变我能说的任何东西。我一定会在将来发布任何错误。 Machavity 的回答解决了我的问题。 【参考方案1】:

如果您需要简单的JOIN,请务必说明关系

SELECT likes.item_id, count(likes.item_id), auctions.*
FROM auctions 
    INNER JOIN likes ON likes.item_id = auctions.id
GROUP by likes.item_id
ORDER by  count(likes.item_id) DESC

【讨论】:

感谢完美!由于我没有足够的声誉,因此我无法投票赞成您的答案。我很感激。 @Twodogstar 您仍然可以通过单击投票箭头下方的复选标记轮廓来接受答案。 @JeffreyBosboom 完成,谢谢。我环顾四周,以为有办法将其标记为已回答,但没有意识到复选标记就是这样做的方法。感谢您的帮助。

以上是关于MySQL 计数并加入以返回有序列表的主要内容,如果未能解决你的问题,请参考以下文章

javascript 编写一个以单个字符串(单词)作为参数的函数。该函数必须返回包含所有capit索引的有序列表

合并两个有序列表

在 graphql/relay 中维护有序列表

python列表索引out of range是啥意思?

Redis——五大数据类型的基本操作(字符串类型,哈希类型,列表类型,集合类型,有序集合类型)

排序算法——计数排序