mysql - 将 count(*) 与 SQL 语句合并到一张表中

标签 mysql sql

我的 MySQL 数据库中有两个表(表 1 和表 2)。我想编写一个 SQL 查询,在格式良好的报告中输出一些摘要统计信息。

让我们举个例子,考虑第一个 SQL 查询,该查询从第一个表中获取 57 岁以上的用户

SELECT count(*) AS OlderThank57
FROM table1
WHERE age >57

从第二个表中,我们希望获得女性用户的数量

SELECT count(*) AS FemaleUsers
FROM table2
WHERE gender = "female"

现在我想要像下面这样的输出

Number of Felame users from table 2: 514
Number of users over the age of 57 from table 1: 918

生成此类报告的最佳方式是什么?

最佳答案

我愿意从阿德里安的答案中扩展一个级别...作为两个单独的字段返回,以便您可以将它们单独放置在报告中,或对齐/格式化数字等

SELECT 'Number of Female users from table 2:' as Msg, 
       count(*) as Entries
  FROM table1
  WHERE age >57
UNION ALL
SELECT 'Number of users over the age of 57 from table 1:' as Msg, 
       count(*) as Entries
  FROM table2
  WHERE gender = "female"

您可能必须强制两个“Msg”列具有相同的填充长度,否则可能会被截断。再说一次,只是另一种选择...

关于mysql - 将 count(*) 与 SQL 语句合并到一张表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8749252/

相关文章:

mysql - SQL 仅选择列上具有自定义最大值的行

java - 如果某些值不存在则插入到表中

mysql - C语言如何防止SQL注入(inject)?

sql - 按升序选择前 3 个值中的最大值

php - 按 ID 和时间戳计算多个表中的行数

mysql - 根据子查询中返回的 id 对多个表进行连接并保持该顺序

mysql 设置变量 innodb_flush_method 为 O_DSYNC 或 O_DIRECT

mysql - 非法混合排序规则 - MySQL 假表

mysql - 时间累计和列格式不正确

php - 执行此递归多对多数据库查找的最优雅方法是什么?