【问题标题】:SQL - Join two tables, Count and Order BySQL - 连接两个表,Count 和 Order By
【发布时间】:2021-12-28 20:35:31
【问题描述】:

我需要按主页上问题的点赞数排序。 我正在使用 php 和 mysql。 我需要 Sql 查询。

解释 => 状态 = 1 表示 -> 喜欢 status = 2 表示 -> 不喜欢

第一张桌子:

问题

id title question created_user_id created_date category_id
1 title-1 question 1 1 2021/11/18 1
2 title-2 question 2 1 2021/11/18 4
3 title-3 question 3 5 2021/11/18 4

第二张桌子:

喜欢

id liked_user_id liked_question_id status
1 1 1 1
2 2 2 1
3 3 1 1

我希望它按主页上的点赞数排序。如果问题不被点赞,应该排在最后。

例子:

<Card> First -> should be the first question. because more likes </Card>

<Card> Second-> should be the second question. because the number of likes is 1 </Card>

<Card> Third-> should be the third question. because there are no likes </Card>

【问题讨论】:

  • minimal reproducible example 在询问 SQL 问题时是一个很好的开始。
  • 请输入样本数据和想要的输出
  • @MeysamaAsadi 好的。我编辑了。

标签: mysql sql join count sql-order-by


【解决方案1】:

希望我正确理解了您的问题。您想根据喜欢的数量对问题表进行排序。您必须获取每个问题的点赞数,并将其与问题表结合起来。

SELECT q.*,l.num
FROM Questions q 
LEFT JOIN 
 (SELECT COUNT(status) AS num,liked_question_id
  FROM Likes
  GROUP BY liked_question_id) l ON q.id = l.liked_question_id
ORDER bY num DESC

db<>fiddle中的演示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 2014-10-21
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多