[英]Is there any way to use multiple source tables in FROM clause without using JOIN in SQL Server?
我可以像这样在 FROM 子句中实现一个嵌套的 SELECT 语句,它可以工作:
SELECT [table1].[ID] as [table_1_ID]
FROM
(SELECT [ID] FROM [the_table_1] WHERE [address] like 'street5' ) as [table1]
理想情况下,我希望在不使用连接的情况下在 FROM 子句中添加多个类似的嵌套 SELECT 语句,最终得到这样的结果(以下代码显然不起作用)
SELECT [nested_selects].[table1].[ID] as [table_1_ID],
[nested_selects].[table2].[ID] as [table_2_ID]
FROM (
(SELECT [ID] FROM [the_table_1] WHERE [address] like 'street5' ) as [table1],
(SELECT [ID] FROM [the_table_2] WHERE [address] like 'street5' ) as [table2]
) as [nested_selects]
(从每个源表中,我只需要一个值。WHERE 子句就是这样做的。)
我知道如何使用 JOIN,但出于某种原因,我希望在没有JOIN 的情况下这样做。 在 SQL 服务器中是否可能发生这样的事情?
如果您可以保证从子查询中只返回一个值,您可以将选择嵌套在 select 中。 您根本不需要from
(我已将您的like
替换为=
):
select
table_1_id = (SELECT [ID] FROM [the_table_1] WHERE [address] = 'street5' ),
table_2_id = (SELECT [ID] FROM [the_table_2] WHERE [address] = 'street5' );
从技术上讲,您不必强制执行此保证。 但是,如果您碰巧在 select、SQL 中为子查询返回了不止一行,则抛出一个Subquery returned more than 1 value
错误。 因此,要么对address
施加唯一约束,要么向每个子选择添加一些内容,以保证只返回一行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.