mysql - 从单独的表中添加计数总计
问题描述
我有 2 个表,它们都引用了国家/地区。这是通过表 1 和/或表 2 中的字段国家。
我可以通过以下语句计算金额
SELECT co.*,
(SELECT COUNT(*) FROM table1 m WHERE m.country=co.id) AS mCount,
(SELECT COUNT(*) FROM table2 e WHERE e.country=co.id) AS eCount FROM countries co
结果是这样的:
| id | name | mCount | eCount |
但我想将 mCount 中的值添加到 eCount 的值中。我期待一个简单的加号,例如:
SELECT co.*, mCount+eCount AS grandTotal
但这不起作用。如何在查询中添加这些列?
解决方案
1-您可以将查询用作派生表。
SELECT dt.*, (dt.mCount + dt.eCount) AS grandTotal FROM
(SELECT co.*,
(SELECT COUNT(*) FROM table1 m WHERE m.country=co.id) AS mCount,
(SELECT COUNT(*) FROM table2 e WHERE e.country=co.id) AS eCount FROM countries co
) AS dt;
2-您可以进一步选择计算列
SELECT co.*,
(SELECT COUNT(*) FROM table1 m WHERE m.country=co.id) AS mCount,
(SELECT COUNT(*) FROM table2 e WHERE e.country=co.id) AS eCount,
(SELECT mCount + eCount) AS grandTotal
FROM countries co
3-您还可以定义用户变量(不鼓励)
SELECT co.*,
@mCount := (SELECT COUNT(*) FROM table1 m WHERE m.country=co.id) AS mCount,
@eCount := (SELECT COUNT(*) FROM table2 e WHERE e.country=co.id) AS eCount,
(@mCount + @eCount) AS grandTotal
FROM countries co
我希望你会最喜欢#2 :)
推荐阅读
- ibm-mobilefirst - 如何在 mobilefirst 独立服务器上启用 swagger 工具
- node.js - 我无法使用 nodejs 在 openshift 中上传图片
- html - 物化按钮不起作用
- android - 谷歌地图街景在随机位置不起作用
- bash - bash 脚本在它打开的奇异容器中执行操作
- android - java.lang.VerifyError:拒绝尝试对错误类进行子类化的类
- python - chatterbot:我的聊天机器人无法训练
- angular - NgZone 在服务中未定义
- python - 链接 boost::python::numpy 的问题
- python - 二维函数的俯视图