MySQL GROUP BY来自不同表的多个列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL GROUP BY来自不同表的多个列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1723字,纯文字阅读大概需要3分钟。
内容图文
![MySQL GROUP BY来自不同表的多个列](/upload/InfoBanner/zyjiaocheng/905/a3d8608edea441ba95dcde5a300e2d81.jpg)
我有以下表格布局:
Table Data
+----------+-------------------------+
| Field | Type |
+----------+-------------------------+
| type | enum('type_b','type_a') |
| type_id | int(11) unsigned |
| data | bigint(20) unsigned |
+----------+-------------------------+
Table A and B:
+--------------+------------------+
| Field | Type |
+--------------+------------------+
| id | int(11) unsigned |
| customer_id | int(11) unsigned |
| ... |
+--------------+------------------+
在表格数据中,存在来自某种类型(a或b)的一些测量数据.
现在我想要永远的客户两种类型的数据a和b的总和.
所以,我想:选择总和,通过a.customer_id,b.customer_id连接a或b并分组.
导致以下查询:
SELECT sum(d.data) as total
FROM data d, ta, tb
WHERE
(d.type LIKE "type_a" AND d.type_id = ta.id)
OR
(d.type LIKE "type_b" AND d.type_id = tb.id)
GROUP BY ta.customer_id, tb.customer_id;
这不能让我得到正确的结果……
我尝试了几种方法,左连接,加入客户表和group by customer.id等.是否有人知道我做错了什么?
感谢名单!
解决方法:
您的查询
SELECT sum(d.data) as total
FROM data d, ta, tb
WHERE
(d.type LIKE "type_a" AND d.type_id = ta.id)
OR
(d.type LIKE "type_b" AND d.type_id = tb.id)
GROUP BY a.customer_id, b.customer_id;
假设d中只有一条记录,它是type_a. ta和tb各有两条记录. d中的记录与d.type_id = ta.id中的ta中的一个记录匹配.因此,(d x ta)的组合允许任何tb记录保留在最终结果中.你会得到一个意想不到的笛卡儿产品.
SELECT x.customer_id, SUM(data) total
FROM
(
SELECT ta.customer_id, d.data
FROM data d JOIN ta
ON (d.type LIKE "type_a" AND d.type_id = ta.id)
UNION ALL
SELECT tb.customer_id, d.data
FROM data d JOIN tb
ON (d.type LIKE "type_b" AND d.type_id = tb.id)
) X
GROUP BY x.customer_id;
内容总结
以上是互联网集市为您收集整理的MySQL GROUP BY来自不同表的多个列全部内容,希望文章能够帮你解决MySQL GROUP BY来自不同表的多个列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。