如何在MYSQL中的WHERE语句之外进行COUNT操作

时间:2009-05-23 19:22:57

标签: mysql

我有一张桌子 - 比如:

A|B
1|1
1|2
1|3
2|1
2|3
2|4
2|5
3|5

我的查询返回A中的不同值,如果它们与B中的值1或2重合 - 那么

A
1
2

我也试图在A栏中返回1和2的原始计数 - 得到类似

的内容
A|Count
1|3
2|4

有没有一种简单的方法来计算这个数量? 但是,COUNT(A)返回与初始WHERE语句一致的A的数量:

A|Count
1|2
2|1

谢谢!

4 个答案:

答案 0 :(得分:2)

我的SQL可能有点生疏,但我认为你可以这样做:

SELECT A, count(*) AS Count FROM MyTable WHERE B IN (1, 2) GROUP BY A;

答案 1 :(得分:1)

另一种方式:

SELECT a, (SELECT count(*) FROM t t2 WHERE t2.a = t.a) a_count
FROM t
WHERE b IN (1,2)
GROUP BY a

答案 2 :(得分:0)

SELECT t1.A, COUNT(DISTINCT t1.B)
FROM MyTable t1 JOIN MyTable t2 ON (t1.A = t2.A)
WHERE t2.A = t2.B
GROUP BY t1.A;

答案 3 :(得分:0)

类似于Bill Karwin的回答:

SELECT
  A,
  Counted.CountOfB
FROM
  MyTable
  INNER JOIN (
    SELECT A, COUNT(B) AS CountOfB
    FROM   MyTable
    GROUP BY  A
  ) Counted ON Counted.A = MyTable.A
WHERE
  {your filter for MyTable}