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

时间:2015-03-04 17:35:57

标签: 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 '2015-03-02' and '2015-03-04'

两个计数条件不同,但这两个查询都共享该日期条件。我做了两个不同的select语句,并在它们之间加了一个UNION。这样可行。唯一的问题是所有数据都出现在语句中第一个别名下的一列中。我需要每个别名都是一个新列。我还必须两次写日期条件。

1 个答案:

答案 0 :(得分:1)

您可以按类型对它们进行分组,这样您就可以获得不同的行:

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';