当前位置: 首页 > 面试题库 >

MySQL跨表计数(*)查询帮助

夔宏深
2023-03-14
问题内容
选择`name`,COUNT(*)AS`count`
从`t1`,`t2`
t2`.id` = t1.id
由`t2`.`id`分组

我想从t1中获取名称,并在t2中获得与ID在t1上相同的行数。

到目前为止,我已经掌握了上述内容,但是如果t2中没有匹配的行,它将不会返回任何数据。count如果没有行,则我希望将其设置为0(或NULL),并且名称仍然返回。

编辑: 我希望能够按count降序排序。(或nameASC)可行吗?


问题答案:

这应该为您工作:

SELECT `t1`.`id` , COUNT(`t2`.`id`) AS `count`
FROM `t1` LEFT JOIN `t2` ON `t1`.`id` = `t2`.`id`
GROUP BY `t1`.`id`

左联接确保您拥有t1中的所有行,而COUNT(t2id)使其仅计算t2.id不为null的记录(即-t2中确实存在的记录)



 类似资料:
  • 我有3张桌子 许可证中的CREATED_AT是一个日期(非空)字段。 表根据同名主键/外键进行关联;客户可以拥有0个或多个许可证,每个许可证都有一个版本。 我想从这些表格中得到: 客户的名字、姓氏和创建的最后一个许可证的release\u id(根据许可证中的created\u AT字段查找最后一个),如果有。 对于这个问题,我使用了以下查询: 这似乎有效,但我问是否有人可以证实我这一点,或者是否

  • 主要内容:查询表中所有字段,查询表中指定的字段在MySQL 中,可以使用 SELECT 语句来查询数据。查询数据是指从数据库中根据需求,使用不同的查询方式来获取不同的数据,是使用频率最高、最重要的操作。 SELECT 的语法格式如下: 其中,各条子句的含义如下: 包含星号通配符的字段列表,表示所要查询字段的名称。 ,表 1 和表 2 表示查询数据的来源,可以是单个或多个。 是可选项,如果选择该项,将限定查询数据必须满足该查询条件。 ,该子句告

  • 问题内容: 我正试图消除我的SQL技能,并需要以下查询的帮助。我当前使用的数据库是mysql。 我想检索所有同时分配了’tag2’和’tag4’的抽认卡。根据现有表的内容(如以下摘录所示),查询应返回两行:FlashCard_ID 1和2。 我将如何制定此查询?自从我不得不做这样的事情已经有一段时间了。 问题答案:

  • 我正在执行一个有限制的表清理,但之前想检查计数。 simple count()查询没有响应。 该表可能有超过5000万条记录。我知道在这么大的数据集中添加连接的影响。但是,这是清理与其他表不匹配的数据所必需的。 如有任何指导,将不胜感激。或替代方法。

  • 问题内容: 我正在增加表的数量,有时我好奇只是为了进行快速的命令行查询以计算数据库中表的数量。那可能吗?如果是这样,查询是什么? 问题答案: 资源 这是我的:

  • 问题内容: 我有一个供用户使用的表,该表具有一个名为“ created”的字段,该字段具有注册日期。 如何获得包含过去12个月每月注册数量计数的列表?像这样: 我不习惯使用mysql,所以直到现在,我只知道如何计算去年的注册数量,而不是如何按最近12个月的数量进行分组。提前致谢! 更新 现在,我使用@fthiella解决方案来得到这个: 我如何强制查询给我计数为0的月份? @fthiella解决方