MySQL从同一列查询多个数据
我有这两个表,我想输出以下结果MySQL从同一列查询多个数据,mysql,sql,select,group-by,pivot,Mysql,Sql,Select,Group By,Pivot,我有这两个表,我想输出以下结果 Table A ----------------------------- ID | Name 1 | John 2 | Doe ----------------------------- Table B ----------------------------- ID | FK | Type | Point 1 | 1 | 1 | 10 2 | 1 | 2 | 15 3 | 1 | 3 | 15 4 | 2 | 1
Table A
-----------------------------
ID | Name
1 | John
2 | Doe
-----------------------------
Table B
-----------------------------
ID | FK | Type | Point
1 | 1 | 1 | 10
2 | 1 | 2 | 15
3 | 1 | 3 | 15
4 | 2 | 1 | 8
5 | 2 | 2 | 6
6 | 2 | 3 | 5
-----------------------------
Expected Output
-----------------------------
ID | Name | Type1 | Type2 | Type3 | Total
1 | John | 10 | 15 | 15 | 40
2 | Doe | 8 | 6 | 5 | 19
-----------------------------
另一个问题是我是否应该索引表B、FK和Type列以获得更好的性能
感谢大家在高级课程中的帮助:)尝试以下方法:
SELECT A.ID, A.Name,
MAX(CASE WHEN B.Type = 1 THEN B.Point ELSE 0 END) Type1,
MAX(CASE WHEN B.Type = 2 THEN B.Point ELSE 0 END) Type2,
MAX(CASE WHEN B.Type = 3 THEN B.Point ELSE 0 END) Type3,
SUM(B.Point) Total
FROM tableA a
LEFT JOIN tableB b ON A.ID = B.FK
GROUP BY A.ID
当然,社区可以提供帮助,请与我们分享您创建的查询。搜索
[mysql][pivot]
您将发现数百个类似问题的答案。谢谢Barmar!最后,我找到了正确的关键字进行搜索。谢谢Shah!你的sql语句省去了我的头疼。我现在知道你的想法了。@WaiMun非常欢迎你。。。您还可以使用此链接检查如何使用stackoverflow