gpt4 book ai didi

php - mysql查询多张表并统计行数

转载 作者:行者123 更新时间:2023-11-29 05:09:14 26 4
gpt4 key购买 nike

我是 MySql 的新手,我在排序查询结果时遇到问题。

我有 2 个表:

表1包含我系统的用户

userId  userName
01 Ken
02 John
03 Bob
04 Steve

表2包含了每个用户的followers

userId, FollowerId.
02 01
01 02
02 03
02 04

所以,在这种情况下,John 有 3 个追随者:Ken、Bob 和 Steve。

我想生成包含 2 列的第三个表:数据库用户和每个用户的关注者数量。我希望按关注者数量对表格进行排序。

  userId NrFollowers
02 3
01 1
03 0
04 0

目前我正在使用以下代码

    $stmt = $conn->prepare("SELECT userId, userName FROM Table1");
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($userId, $userName);
while($stmt->fetch()) {
//count number followers
$stmtfl = $conn->prepare("SELECT * FROM Table2 WHERE userId = (?)");
$stmtfl->bind_param("s", $userId);
$stmtfl->execute();
$stmtfl->store_result();
$stmtfl->fetch();
$followCount= $stmtfl->num_rows;

//now I have $userName and $NrFollowers

此解决方案未根据需要针对每个数据库的用户循环进行优化,并且不允许按关注者数量对用户进行排序。

有人可以帮我编写正确的 Mysql 查询吗?

最佳答案

对于sql查询,你可以试试这个:

select
tbl1.userId,
count(distinct tbl2.FollowerId) as NrFollowers
from tbl1
left join tbl2
on tbl1.userId = tbl2.userId
group by tbl1.userId
order by count(distinct tbl2.FollowerId) desc

参见 demo在这里。

关于php - mysql查询多张表并统计行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42453469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com