首页 > 解决方案 > 将选择放在变量子查询中返回多个值

问题描述

我想将以下查询放入变量中,但出现错误:

“子查询返回多个值”

select (select count(cb) from pater b where b.cb=a.parent) AS test_pater 
from pater a 

我想计算父值出现在 cb 列中的次数,并将结果放在每一行的 test_pater 列中

预期成绩:

预期成绩

标签: sqlsql-server

解决方案


我不得不猜测你的表结构,但我认为这可能是你想要的?

http://sqlfiddle.com/#!9/fdc493/3

创建表结构

CREATE TABLE pater (cb int, parent int);
INSERT INTO pater VALUES 
(1,0), -- root
(2,1), (3,1), -- parent 1 has 2 children
(4,3), (5,3); -- parent 3 has 2 children

您的查询

SELECT cb, (SELECT count(cb) FROM pater b WHERE b.parent = a.cb) as test_pater FROM pater a;

结果

| cb | test_pater |
|----|------------|
| 1  | 2          |
| 2  | 0          |
| 3  | 2          |
| 4  | 0          |
| 5  | 0          |

推荐阅读