SQL 查询如何有两个 from 子句? [英] How can a SQL query have two from clauses?

查看:130
本文介绍了SQL 查询如何有两个 from 子句?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这对我来说太奇怪了:

delete from GearsDev.dbo.Products 
from GearsDev.dbo.Products as C
inner join #Common as M
    on M.item = C.ItemNumber

#Common 是一个临时表,但其余部分对我来说毫无意义.

#Common is a temp table, but the rest of it makes no sense to me.

你怎么会有两个 from 子句?

How can you have two from clauses?

推荐答案

DELETE,可以带两个FROM子句.

第一个FROM:

来自:是一个可选关键字,可以在 DELETE 关键字和目标 table_or_view_name 或 rowset_function_limited 之间使用.

FROM: Is an optional keyword that can be used between the DELETE keyword and the target table_or_view_name, or rowset_function_limited.

第二个FROM:

FROM :指定附加的 FROM 子句.这个对 DELETE 的 Transact-SQL 扩展允许在第一个 FROM 子句中从表中指定数据和从表中删除相应的行.

FROM <table_source>: Specifies an additional FROM clause. This Transact-SQL extension to DELETE allows specifying data from and deleting the corresponding rows from the table in the first FROM clause.

这个扩展指定了一个连接,可以用来代替 WHERE 子句中的子查询来标识要删除的行.

This extension, specifying a join, can be used instead of a subquery in the WHERE clause to identify rows to be removed.

因此,当使用#common 连接时,SQL 将从Products 表中删除具有匹配项的记录.

So, the SQL will delete records from the Products table that have a matching item when it is joined with #common.

这相当于(在含义上)以下查询:

This is equivalent (in meaning) to the following query:

delete from [GearsDev].[dbo].[Products]
where ItemNumber in
(
  select item from #common
)

这篇关于SQL 查询如何有两个 from 子句?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆