减少MySQL代码或合并SELECT语句

减少MySQL代码或合并SELECT语句,mysql,Mysql,我已经与银行数据库系统建立了一些关系。 这是我当前的代码。桌子上有 SELECT COUNT(AccountType) AS Student_Total FROM Account WHERE AccountType ='Student' and SortCode = 00000001; SELECT COUNT(AccountType) AS Student_Total FROM Account WHERE AccountType ='Student' and SortCode = 0000

我已经与银行数据库系统建立了一些关系。 这是我当前的代码。桌子上有

SELECT COUNT(AccountType) AS Student_Total FROM Account
WHERE AccountType ='Student' 
and SortCode = 00000001;
SELECT COUNT(AccountType) AS Student_Total FROM Account
WHERE AccountType ='Student' 
and SortCode = 00000002;
SELECT COUNT(AccountType) AS Student_Total FROM Account
WHERE AccountType ='Student' 
and SortCode = 00000003;
代码的其余部分与此部分重复,使用下一种类型的“帐户”,并再次通过sortcode的1-3进行循环

我想知道是否有更优雅的制作方法。我需要计算每家银行的学生、活期和储蓄账户的数量


或者有没有一种方法可以将大量选择组合在一起,形成一个整洁的表格?

这就是
分组方式的作用

SELECT SortCode,COUNT(AccountType) AS Student_Total FROM Account
WHERE AccountType ='Student' 
GROUP BY SortCode;
更新:

您还可以使用多个分组字段按分组:

SELECT SortCode,AccountType,COUNT(AccountType) AS Student_Total FROM Account
GROUP BY SortCode,AccountType;

您还可以对此查询应用透视方法,以始终返回单行并知道结果集的固定最终列。然而,应用GROUPBY允许更灵活地返回行,特别是当您有大量的单独内容要汇总时

select
      A.AccountType,
      SUM( IF( A.SortCode = 1, 1, 0 )) as SortCode1Cnt,
      SUM( IF( A.SortCode = 2, 1, 0 )) as SortCode2Cnt,
      SUM( IF( A.SortCode = 3, 1, 0 )) as SortCode3Cnt
   from
      Account A
   where
      A.AccountType = 'Student'
      AND A.SortCode IN ( 1, 2, 3 )
   group by
      A.AccountType

注意。。。排序代码似乎是一个数字,因为没有引号表示字符串。所以,所有的前导零都是无关的。如果您仅基于单个帐户类型执行此操作,则您甚至不需要“前导帐户类型”列,也可以将组删除。

那么我如何将此应用于9条SELECT语句?您不必这样做-这将创建一个表,其中每个
SortCode
都有一行。对!因此,如果我们接受此查询并重复它3次,每次都将Student更改为Saver或Current how we Combing所有这3个表?
GROUP BY
允许您拥有所需的任意多个组字段。我将用示例代码+1更新答案,但我会删除第一个查询。我很清楚OP一直想要第二个,你也可以发布一个
show create table Account
输出吗?因为您不想在非索引列上使用GROUP BY。。