表有A,B两个字段,现在要求输出【A,B,count(C)】,其中count(C)是B等于A的数目。
例如:
A B
1 2
2 3
3 2
输出:
1 2 0
2 3 2
3 2 1
应该要怎么写sql语句呢。
具体应用就是查询当前的文件夹信息,同时标出每个文件夹包含的子文件数。
表有A,B两个字段,现在要求输出【A,B,count(C)】,其中count(C)是B等于A的数目。
例如:
A B
1 2
2 3
3 2
输出:
1 2 0
2 3 2
3 2 1
应该要怎么写sql语句呢。
具体应用就是查询当前的文件夹信息,同时标出每个文件夹包含的子文件数。
CREATE TABLE new_table (
A INT NOT NULL,
B INT NOT NULL
);
INSERT INTO new_table (A, B) VALUES (1, 2), (2, 3), (3, 2);
SELECT
a.A,
a.B,
(SELECT count(b.B)
FROM new_table b
WHERE b.B = a.A) C
FROM new_table a;
虽然比较丑(看下其他人有更好的做法吗)
1 回答2.4k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
361 阅读
@aristotll 的写法,从结果应该是没问题的,但使用子查询的方式可能会存在性能问题,可以按照下面的方式改写:
其思想就是让SQL做集合的运算,而不是像其他编程语言那样,显式的让数据库做循环操作。