如何将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
的结果是一条记录,则没有问题。但如果它有多个记录,它就会失败。
答案 0 :(得分:4)
您可以像这样使用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
答案 1 :(得分:4)
我通常只在计算时使用这种查询。例如:
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
答案 2 :(得分:-1)
不,你不能使用这样的子查询,因为在子查询中你将得到一个值,你不能在sql查询中选择一个值。您只能选择表的列名。所以这完全是一种编写子查询的错误格式。