Mysql 多个SQL计数请求,一个查询

Mysql 多个SQL计数请求,一个查询,mysql,Mysql,我是SQL的新手,我知道这应该很容易,但我似乎找不到任何关于如何具体实现我所寻找的目标的参考资料。我查过档案,找不到一个基本的例子 不管怎样,我只想- SELECT (COUNT (i.productNumber WHERE i.type = 'type1') AS 'Type 1'), (COUNT (i.productNumber WHERE i.type = 'type2') AS 'Type 2'), FROM items AS i WHERE i.dateadded BETWEEN

我是SQL的新手,我知道这应该很容易,但我似乎找不到任何关于如何具体实现我所寻找的目标的参考资料。我查过档案,找不到一个基本的例子

不管怎样,我只想-

SELECT
(COUNT (i.productNumber WHERE i.type = 'type1') AS 'Type 1'),
(COUNT (i.productNumber WHERE i.type = 'type2') AS 'Type 2'),
FROM items AS i 
WHERE i.dateadded BETWEEN '2015-03-02' and '2015-03-04'

这两个计数条件不同,但这两个查询都共享该日期条件。我做了两个不同的select语句,并在它们之间建立了一个并集。这很有效。唯一的问题是所有数据都显示在语句中第一个别名下的一列中。我需要每个别名都是一个新列。我还要写两次日期条件

您可以按类型对它们进行分组,以便为每个类型获得不同的行:

SELECT i.type, COUNT(i.productNumber)
FROM items i
WHERE i.dateadded BETWEEN '2015-03-02' AND '2015-03-04'
GROUP BY i.type;
如果你真的想要一排,那么你可以

SELECT COUNT(b.productNumber) AS 'type1', COUNT(c.productNumber) AS 'type2'
FROM items i
LEFT JOIN items b on b.productNumber = i.productNumber
LEFT JOIN items c on c.productNumber = i.productNumber
WHERE i.dateadded BETWEEN '2015-03-02' AND '2015-03-04'
  AND b.type = 'type1'
  AND c.type = 'type2';

我应该说得更具体些。这些类型实际上在一个“IN”语句中,所以请按i.type IN('CAR'、'BOAT'、'TRACTOR')等计算一个计数。另一个i.type('PLANE'、'helposer')计数。看看您给出的第二个选项,但是,我猜我可以用语句中的那些替换条件。我的假设正确吗?我只是玩弄它。我已经让它非常接近我想要的工作方式。谢谢你的帮助!