4

重複
の可能性: SQL クエリに from 句を 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つがわかりません。

4

3 に答える 3

1

最初の 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

ステートメントに選択を埋め込む方法に注意してください。これにより、レポートを実行する前に、選択からクエリの最後まで実行するだけで、どのレコードが削除されるかを確認できます。

于 2012-12-14T20:42:26.030 に答える
1

2 番目のFROMのドキュメントを引用するには:

FROM table_source

追加の FROM 句を指定します。この DELETE に対する Transact-SQL 拡張機能を使用すると、最初の FROM 句でテーブルからデータを指定し、対応する行を削除できます。<table_source>

結合を指定するこの拡張機能は、削除する行を識別するために WHERE 句のサブクエリの代わりに使用できます。

詳細については、「FROM (Transact-SQL)」を参照してください。

したがって、基本的には缶に書かれていることを行います。元のテーブルで削除されるデータが決定される追加の結果セットを指定します。

于 2012-12-14T19:59:31.447 に答える
0

のようにも書けると思います。

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
于 2012-12-14T19:54:21.863 に答える