Допустим, у меня есть следующая таблица с уже вставленными этими строками:
| a | b | c |
|--- |---- |------- |
| 1A | 1B | (null) |
| 2A | 2B | 1A |
| 3A | 3B | 1A |
Я бы хотел
SELECT
все из таблицы в запросе и - также подсчитывает для каждой строки, как часто
a
соответствующей строки появляется в c
во всей таблице.
Вот как должен выглядеть ожидаемый результат:
| a | b | c | count |
|--- |---- |------- |------ |
| 1A | 1B | (null) | 2 |
| 2A | 2B | 1A | 0 |
| 3A | 3B | 1A | 0 |
Для первого ряда «1А» также появляется в c
второго и третьего ряда. Тем не менее, «2A» или «3A» больше нигде не отображается в c
.
Я пробовал следующее ( SQL Fiddle ):
create table test (a varchar(30), b varchar(30), c varchar(30));
insert into test (a, b) values ("1A", "1B");
insert into test (a, b, c) values ("2A", "2B", "1A");
insert into test (a, b, c) values ("3A", "3B", "1A");
select *, (select count(*) from test where test.c = a) as count from test;
Однако count
всегда 0
.
Как мне добиться того, что я описал выше в одном запросе? Буду признателен за любую помощь! :)