Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在变量子查询中放入select返回多个值_Sql_Sql Server - Fatal编程技术网

Sql 在变量子查询中放入select返回多个值

Sql 在变量子查询中放入select返回多个值,sql,sql-server,Sql,Sql Server,我想将以下查询放入变量中,但出现错误: 子查询返回多个值 我想计算父值出现在cb列中的次数,并将结果放在每行的test_pater列中 预期成果: 我不得不猜测你的桌子结构,但我想这可能是你想要的 创建表结构 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); -- paren

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

子查询返回多个值

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

预期成果:


我不得不猜测你的桌子结构,但我想这可能是你想要的

创建表结构

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          |

我不得不猜测你的桌子结构,但我想这可能是你想要的

创建表结构

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          |

我在读这篇文章的字里行间,但如果您的目标是计算每个父项在该表的cb列中出现的次数,我想类似的东西会给您这个结果

select cb as parent, count (*) as occurrences_in_cb
from pater p
where exists (
  select null
  from pater c
  where p.cb = c.parent
)
group by cb
根据您对它所做的操作,您可能不需要semi-join-exists子句。这只是为了防止非父级的cb实体出现在查询结果中


然而,它不会给你零计数。我不确定这是否重要,正如您的示例中所列。如果不了解您的用例,就很难说清楚。

我在读这篇文章的字里行间,但是如果您的目标是计算每个父项在该表的cb列中出现的次数,我想类似的东西会给您这个结果

select cb as parent, count (*) as occurrences_in_cb
from pater p
where exists (
  select null
  from pater c
  where p.cb = c.parent
)
group by cb
根据您对它所做的操作,您可能不需要semi-join-exists子句。这只是为了防止非父级的cb实体出现在查询结果中


然而,它不会给你零计数。我不确定这是否重要,正如您的示例中所列。如果不了解您的用例,就很难判断。

1这只是查询的一部分,在语法上是不正确的。2标记您正在使用的数据库。对不起,查询是:选择SelectCountCB from pater b,其中b.cb=a.parent作为test_pater from pater a我想计算父值出现在cb列中的次数,并将结果放入每行的test_pater列中。编辑问题并将该信息放入查询中。示例数据和期望的结果也会有帮助。谢谢我编辑了问题1这只是查询的一部分,语法不正确。2标记您正在使用的数据库。对不起,查询是:选择SelectCountCB from pater b,其中b.cb=a.parent作为test_pater from pater a我想计算父值出现在cb列中的次数,并将结果放入每行的test_pater列中。编辑问题并将该信息放入查询中。示例数据和所需结果也会有帮助。谢谢我编辑了问题是的,这些是我想要的结果谢谢,但是如何将整个查询放入变量中?因为我想通过一个存储过程来生成结果,所以select选项不是一个好选项您使用的是什么DBMS,存储在变量中是什么意思。。。您是否在程序中使用这些信息?如果是,用什么语言?如果可以的话,希望能更清楚一点。您是否可以显示存储过程,例如编辑原始问题以包括是的,我使用的是sql server,我必须编辑一个存储过程,该存储过程在执行时将显示这些结果。这个过程很大,它包含其他查询,所以我不能正确地显示它,但我只需要添加这个查询。是不是更清楚一点?谢谢你的帮助我是初学者是的这些是我想要的结果谢谢你但是如何把整个查询放在一个变量中?因为我想通过一个存储过程来生成结果,所以select选项不是一个好选项您使用的是什么DBMS,存储在变量中是什么意思。。。您是否在程序中使用这些信息?如果是,用什么语言?如果可以的话,希望能更清楚一点。您是否可以显示存储过程,例如编辑原始问题以包括是的,我使用的是sql server,我必须编辑一个存储过程,该存储过程在执行时将显示这些结果。这个过程很大,它包含其他查询,所以我不能正确地显示它,但我只需要添加这个查询。是不是更清楚一点?谢谢你的帮助,我是初学者