Sql 如何将select语句的结果用作另一个select语句的列?
如何将SQL select语句的结果用作另一个SQL select语句的列 例如:Sql 如何将select语句的结果用作另一个select语句的列?,sql,sql-server,tsql,select,Sql,Sql Server,Tsql,Select,如何将SQL select语句的结果用作另一个SQL select语句的列 例如: SELECT s.name, (SELECT COUNT(*) FROM product as p WHERE p.store_id=s.id) FROM store as s 如果其他_表的结果是一条记录,则没有问题。但是,如果它有多条记录,它将失败。不,您不能像这样使用子查询,因为在子查询中,您将获得一个值,并且不能在sql查询中选择一个值。只能选择表的列名。因此,编写子查询的格式完全错误。您
SELECT s.name,
(SELECT COUNT(*) FROM product as p WHERE p.store_id=s.id)
FROM store as s
如果其他_表的结果是一条记录,则没有问题。但是,如果它有多条记录,它将失败。不,您不能像这样使用子查询,因为在子查询中,您将获得一个值,并且不能在sql查询中选择一个值。只能选择表的列名。因此,编写子查询的格式完全错误。您可以这样使用:
select a, b, c.t
from my_table
cross apply (select t from other_table where other_table.id = my_table.a) as c
我通常只在计数时使用这种查询。例如:
SELECT s.name,
(SELECT COUNT(*) FROM product as p WHERE p.store_id=s.id)
FROM store as s
在这种情况下,始终只返回一条记录,查询将正常工作。请注意,这只是一个示例,您应该在这里使用联接而不是子查询
在您的情况下,可以使用TOP关键字将子查询中的记录数限制为一个:
select a, b,
(select TOP 1 t from other_table where other_table.id = my_table.a) as c
from my_table
为什么不在另一个_table.id=my_table.a上连接两个表呢?我想我应该使用光标或其他东西。@Jayvee外部表也可能有Where子句nx,但是正如我所说的,如果子查询对于主查询的每一行只有一条记录,它就可以工作了。我对这个查询做了一些修改,现在它可以工作了:SELECT id,选择points from points where points.serial=table1.serial作为spoint,table1I中的一些其他字段将返回一些记录,直到到达表中有多条记录的序列points@Shivam:拉赫马尼是对的。查询语法正确,并且在子查询返回多条记录之前一直有效。