Php 我可以在一次查询中选择更多计数吗?

Php 我可以在一次查询中选择更多计数吗?,php,sql,Php,Sql,我有一个表,其中有一个名为type的字段,其中可以有3行:1、2和3 现在,我根本不在乎3。我需要计算type=1和type=2的行数。我使用两个查询来完成此操作,如下所示: 查询1:选择COUNT(id)作为type='1'用户的计数 查询2:选择COUNT(id)作为type='2'用户的计数 我可以只使用一个查询来执行此操作吗?如果是,我该不该?查询看起来如何?选择类型,COUNT(id)作为COUNT SELECT type, COUNT(id) AS count FR

我有一个表,其中有一个名为
type
的字段,其中可以有3行:
1
2
3

现在,我根本不在乎
3
。我需要计算
type=1和
type=2的行数。我使用两个查询来完成此操作,如下所示:

查询1:
选择COUNT(id)作为type='1'用户的计数

查询2:
选择COUNT(id)作为type='2'用户的计数

我可以只使用一个查询来执行此操作吗?如果是,我该不该?查询看起来如何?

选择类型,COUNT(id)作为COUNT
SELECT type,
       COUNT(id) AS count
  FROM users
 WHERE type IN ('1','2')
 GROUP BY type
来自用户 按类型分组 类型<3的
选择类型,计数(id)作为计数
来自用户
按类型分组
类型<3的

如果需要单独的数字

SELECT SUM(IF(type='1', 1, 0)), SUM(IF(type='2', 1, 0)) 
FROM users WHERE type IN ('1', '2')

如果你想要分开的号码

SELECT SUM(IF(type='1', 1, 0)), SUM(IF(type='2', 1, 0)) 
FROM users WHERE type IN ('1', '2')
复制品?在单个查询中执行此操作的“简单”方法的缺点是两个计数作为单独的行返回,因此需要额外的客户端代码来提取它们。其他答案设法以单行形式提供答案,这使客户端更容易,但在服务器上可能效率较低。重复?在单个查询中执行此操作的“简单”方法的缺点是两个计数作为单独的行返回,因此需要额外的客户端代码来提取它们。其他答案设法将答案作为一行提供,这使客户端更容易,但在服务器上可能效率较低。
SELECT SUM(IF(type='1', 1, 0)), SUM(IF(type='2', 1, 0)) 
FROM users WHERE type IN ('1', '2')