php - 内连接查询建议

标签 php mysql sql database inner-join

我需要有关创建内部联接查询的帮助。

我有 2 个 table 、博客和关注者。

在博客表中,我拥有所有博客信息,然后在关注者中,我有两个字段,分别是用户 ID 和用户关注的博客 ID。

我想创建一个查询,根据关注者数量对博客进行排序。

这是我用来展示用户正在关注的构建的示例(仅供引用):

    $query = "SELECT * FROM blogs INNER JOIN followers ON (blogs.id = followers.blogid) WHERE followers.userid='" .$usernamesesh. "'";

我怎样才能创建一个类似的查询来选择所有博客,但按关注者从高到低对它们进行排序。

希望这是有道理的,由于某种原因我无法理解这个问题!

唯一的其他选择是在博客表中添加一些关注者字段,但这将涉及更改我的关注脚本等。

克雷格。

最佳答案

如果不知道表的确切结构,就很难判断。假设您的关注者表看起来像这样

   blogid | userid
   -------+----------
     1    |  2
   -------+----------
     1    |  1
   -------+----------
     1    |  3
   -------+----------
     2    |  2
   -------+---------

 SELECT blogid, COUNT(userid) AS UserCount FROM followers 
 GROUP BY blogid ORDER BY UserCount DESC;

然后您可以加入博客表以从该表中获取您需要的列。

SELECT blogs.*, IFNULL(f.UserCount,0) AS UserCount
FROM blogs 
 LEFT JOIN (
    SELECT blogid, COUNT(userid) AS UserCount FROM followers 
    GROUP BY blogid
 ) f
 ON f.blogid = blogs.id
 ORDER BY UserCount DESC

关于php - 内连接查询建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19710527/

相关文章:

javascript - 在 localhost/phpmyadmin 中使用控制台

php - 将 worldpay 示例拼接在一起

mysql - 选择值 AS (desc) 在子查询中不起作用

php - 查询循环 php 中的查询

php - 在 if else 语句中从不同查询中选择一个数据

php - 更改 PHPSESSID cookie 的名称会得到什么?

php - 不确定mysql查询

sql - 递增整数 MSSQL

MySQL搜索一个项目和远处的所有对象

sql - 在 SQL 中获取当前年份的第一个月和第一天