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
ステートメントからの2つがわかりません。
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
ステートメントからの2つがわかりません。
最初の from はオプションですが、2 番目はそうではありません。
たとえば、次のように書くことができます
delete from table1 where id = 10
また
delete table1 where id = 10
ただし、このクエリが他のテーブルに結合している場合は、その 2 番目の 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
ステートメントに選択を埋め込む方法に注意してください。これにより、レポートを実行する前に、選択からクエリの最後まで実行するだけで、どのレコードが削除されるかを確認できます。
2 番目のFROMのドキュメントを引用するには:
FROM table_source
追加の FROM 句を指定します。この DELETE に対する Transact-SQL 拡張機能を使用すると、最初の FROM 句でテーブルからデータを指定し、対応する行を削除できます。
<table_source>
結合を指定するこの拡張機能は、削除する行を識別するために WHERE 句のサブクエリの代わりに使用できます。
詳細については、「FROM (Transact-SQL)」を参照してください。
したがって、基本的には缶に書かれていることを行います。元のテーブルで削除されるデータが決定される追加の結果セットを指定します。
のようにも書けると思います。
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
FROM @test のような結合条件に適合する任意の行が削除される場所
delete dbo.Employee
from @test g