社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

mysql:从两个表中组合信息的查询

opstalj • 5 年前 • 1498 次点击  

假设以下配置:

  1. 表1“通用”字段:id&name
  2. 表2带字段的“info”:userid(和其他一些)

当有要存储的信息时,将有记录添加到信息表中。我可以很容易地得到每个用户的记录数量的一个很好的概述,比如:

mysql> SELECT userId ,COUNT(*) as nbr_entries FROM info GROUP BY userId ORDER BY nbr_entries DESC;
+-----------+-------------+
| userId    | nbr_entries |
+-----------+-------------+
| 3987      |        2254 |
| 11220     |        1922 |
...

现在,我的问题是:我希望在表1(generic)中查找每个用户id,以便查询结果如下:

+-----------+-----------+-------------+
| name      | userId    | nbr_entries |
+-----------+-----------+-------------+
| Peter     | 3987      |        2254 |
| Walter    | 11220     |        1922 |
...

你知道怎么做到吗? 提前谢谢。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40863
 
1498 次点击  
文章 [ 3 ]  |  最新文章 5 年前
Paul Spiegel
Reply   •   1 楼
Paul Spiegel    6 年前

使用左连接:

SELECT g.name, g.id as userId, COUNT(i.userId) as nbr_entries
FROM generic g
LEFT JOIN info i ON i.userId = g.id
GROUP BY g.id
ORDER BY nbr_entries DESC

这样,您还将包括没有信息条目的用户,并获得 0 作为 nbr_entries .

Muhammad Saqlain
Reply   •   2 楼
Muhammad Saqlain    6 年前

你可以使用 subquery 和; JOIN

SELECT t1.name, t2.userId , t2.nbr_entries 
FROM generic t1
JOIN
(SELECT userId ,COUNT(*) as nbr_entries FROM info GROUP BY userId) t2
ON t1.userId = t2.userId ORDER BY t2.nbr_entries DESC;
Fahmi
Reply   •   3 楼
Fahmi    6 年前

你可以用 JOIN

SELECT b.name,userid,COUNT(*) as nbr_entries FROM info a
inner join generic b on a.userid=b.id
GROUP BY b.name,userId 
ORDER BY nbr_entries DESC;