子查询获取派生值

Subquery to get derived value

我在 MySQL 中有以下 table T,其中包含 A 和 B 列。

我想查询此 table 以获取值 'C',该值计算列 'A' 中的值出现在列 [=27= 中的次数].比如1在B列出现了2次,那么C列的第一行应该是2。我不想遍历table,所以我想用子查询得到这个。下面给出了所需的输出。

我尝试使用以下查询

SELECT A, B, (SELECT COUNT(A) FROM T WHERE B = A) AS C
FROM T

但我在 C 列的所有行中得到的都是 0。请帮我找出错误。

使用相关子查询:

SELECT t1.A, t1.B,
      (SELECT COUNT(*) FROM tablename t2 WHERE t2.B = t1.A) AS C 
FROM tablename t1

或者:

SELECT t1.A, t1.B,
      (SELECT SUM(t2.B = t1.A) FROM tablename t2) AS C 
FROM tablename t1

或使用自 LEFT 连接和聚合:

SELECT t1.A, t1.B, COUNT(t2.B) AS c
FROM tablename t1 LEFT JOIN tablename t2
ON t2.B = t1.A
GROUP BY t1.A, t1.B