MySQL视图如何将子查询返回的两列结果分别赋值给两个别名
MySQL子查询返回多列创建视图问题解答
结论
该需求完全可以实现,你现有代码无法运行的核心原因是语法使用错误:外层SELECT列表中的标量子查询仅允许返回单个值(1行1列),你编写的子查询既返回多列、又会在分组后返回多行,同时存在别名重复定义的冲突,因此无法执行。
正确实现方案
你要实现的是按机构编码统计近1天的总交易数、交易成功数,直接使用条件聚合即可完成,无需嵌套多层子查询,性能更优且语法合规:
create view Test1 as select Org_CODE as Code, count(Transaction_ID) as `Count`, sum(if(Transaction_ID='Y', 1, 0)) as Success_Count from ekyc_table where Transaction_DATE between DATE_ADD(CURDATE(), INTERVAL -1 day) AND CURDATE() group by Org_CODE;
逻辑说明
- 先通过WHERE条件过滤出近1天的所有交易数据
- 按
Org_CODE分组,每个机构对应一行结果 count(Transaction_ID)直接统计每个机构的总交易数量,已按你的需求设置别名为Countsum(if(Transaction_ID='Y', 1, 0))通过条件求和统计每个机构的成功交易数量,若不需要单独展示可删除该字段
如果你确实需要保留原思路的子查询写法,也可以通过JOIN关联两个子查询的结果,但执行效率远低于上述条件聚合方案,不推荐使用。
内容的提问来源于stack exchange,提问作者Ketan Patil
相关产品推荐
相关产品推荐

