Как вы СЧИТАЕТЕ вне оператора WHERE в MYSQL - PullRequest
1 голос
/ 23 мая 2009

У меня есть таблица - что-то вроде:

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

Я также пытаюсь вернуть исходное число 1 и 2 в столбце A - чтобы получить что-то вроде

A|Count
1|3
2|4

Есть ли простой способ получить этот счет, пожалуйста? Однако COUNT (A) возвращает число A, совпадающее с начальным оператором WHERE:

A|Count
1|2
2|1

Спасибо!

Ответы [ 4 ]

2 голосов
/ 23 мая 2009

Мой SQL может быть немного ржавым, но я думаю, что вы можете сделать:

SELECT A, count(*) AS Count FROM MyTable WHERE B IN (1, 2) GROUP BY A;
1 голос
/ 24 мая 2009

Другой способ:

SELECT a, (SELECT count(*) FROM t t2 WHERE t2.a = t.a) a_count
FROM t
WHERE b IN (1,2)
GROUP BY a
0 голосов
/ 23 мая 2009

Аналогично ответу Билла Карвина:

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}
0 голосов
/ 23 мая 2009
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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...