繁体   English   中英

如何将select语句的结果用作另一个select语句的列?

[英]How to use the result of a select statement as a column of another select statement?

如何将SQL select语句的结果用作另一个SQL select语句的列?

例如:

select a, b,
    (select t from other_table where other_table.id = my_table.a) as c
from my_table

如果other_table的结果是一条记录,则没有问题。 但如果它有多个记录,它就会失败。

您可以像这样使用CROSS APPLY

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

不,你不能使用这样的子查询,因为在子查询中你将获得一个值,你不能在sql查询中选择一个值。 您只能选择表的列名。 所以这完全是一种编写子查询的错误格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM