gpt4 book ai didi

mysql - 如何获取与另一列相关的行数?

转载 作者:行者123 更新时间:2023-11-29 01:26:44 25 4
gpt4 key购买 nike

我有如下三个表

应用:

+----+------+--------+
| id | name | author |
+----+------+--------+
| 1 | App1 | 1 |
| 2 | App2 | 1 |
| 3 | App3 | 1 |
+----+------+--------+

安装:

+-----+----+---------------------+
| app | id | timestamp |
+-----+----+---------------------+
| 3 | 1 | 2017-01-27 19:12:05 |
+-----+----+---------------------+

用户:

+----+----------+-------------------+--------------------------------------------------------------+
| id | username | email | password |
+----+----------+-------------------+--------------------------------------------------------------+
| 2 | name | email@address.com | |
+----+----------+-------------------+--------------------------------------------------------------+

每次有人安装一个应用程序时,它都会被添加到安装表中并加盖时间戳。

我知道我可以通过这样做来获得单个应用程序的安装

SELECT a.name,COUNT(b.id) as installs FROM applications a,installs b WHERE a.id=3 AND b.app=3;

我会得到

+------+----------+
| name | installs |
+------+----------+
| App3 | 30000 |
+------+----------+

我想要的是能够在一个结果集中获取应用程序的所有名称,以及来自某个作者的应用程序的安装情况,如下所示:

+------+----------+
| name | installs |
+------+----------+
| App1 | 10000 |
| App2 | 20000 |
| App3 | 30000 |
+------+----------+

最佳答案

这实际上是一个带有JOINWHERE 的基本GROUP BY 查询:

SELECT a.name, COUNT(i.id) as installs
FROM applications a LEFT JOIN
installs i
ON a.id = b.app
WHERE a.author = 1
GROUP BY a.name;

注意事项:

  • 永远不要FROM 子句中使用逗号。 始终使用正确、明确的 JOIN 语法。
  • 您的表别名应该是表名的缩写,而不是像 b 这样的随机字母。
  • JOIN 条件使用两个表中的列。
  • LEFT JOIN 为作者保留所有应用程序,即使没有安装。

关于mysql - 如何获取与另一列相关的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41948794/

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