子查询获取派生值
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
我在 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