delete from machine_placement_group
from (machine_group g
left join config_chg_req r
on g.machine_group_id = r.machine_group_id)
join machine_placement_group mg
on g.machine_group_id = mg.machine_group_id
我不明白,这两个从报表。
delete from machine_placement_group
from (machine_group g
left join config_chg_req r
on g.machine_group_id = r.machine_group_id)
join machine_placement_group mg
on g.machine_group_id = mg.machine_group_id
我不明白,这两个从报表。
我想这也可以写成
delete machine_placement_group
from machine_group g
left join config_chg_req r
on g.machine_group_id = r.machine_group_id
join machine_placement_group mg
on g.machine_group_id = mg.machine_group_id
和作品像
Declare @Test Table (id int)
insert into @Test values(1)
delete dbo.Employee
from @test g
join dbo.Employee e on g.id=e.ID
拟合加盟条件 像
一个有效的声明,其中任何行从@Test删除delete dbo.Employee
from @test g
我想我现在明白了。它将删除machine_placement_group中的每一行,其中machine_group_id中的machine_group中有匹配的行,machine_group_id中的config_chg_req中有一行。如果相应的行在表b和c中退出,则删除表a中的一行。我怎么办? – user1904985
要报价the documentation for t他第二 FROM:
FROM table_source
指定一个额外的FROM子句。 此DELETE的Transact-SQL扩展允许 从第一个FROM子句的表中指定
<table_source>
的数据和删除表中相应的行的 。可以使用指定联接的扩展来代替WHERE子句 中的子查询来标识要删除的行。
欲了解更多信息,请参阅FROM (Transact-SQL).
所以基本上它做什么,它在锡说。您可以指定一个附加结果集,从中确定原始表中要删除的数据。
第一个是可选的,第二个不是。
例如,你可以写
delete from table1 where id = 10
或
delete table1 where id = 10
但是,如果你要加入到其他表,因为这查询你需要的第二个FROM。
我喜欢这种东西的首选样式是使用别名,所以我会写。
delete g
--select *
from machine_group g
left join config_chg_req r
on g.machine_group_id = r.machine_group_id
join machine_placement_group mg
on g.machine_group_id = mg.machine_group_id
你注意我如何嵌入选择在声明中,这可以让你看到你运行刚刚从选择查询
是什么RDBMS结束运行报告之前的记录将被删除你在用吗? – Taryn
对我来说看起来像SQL Server语法。 – Yuck
@Yuck我从来没有见过SQL Server语法,其中有两个从子句中删除 – Taryn