2011-12-28 9 views

答えて

4

正しい構文は

DELETE [ FROM ] { <object> } 
[ FROM <table_source>] 
[ WHERE { <search_condition> } ] 

適用されあなたの例に、これはこれは、(この場合にはほとんど必要がありますが)エイリアシングによってさらに短縮することが可能

Regテーブルに

DELETE FROM Reg 
FROM Reg 
     INNER JOIN RegDoc ON Reg.RegId = RegDoc.RegId 
     INNER JOIN Doc ON RegDoc.DocId = Doc.DocId 
WHERE Doc.Name LIKE N'%Title%' 

注の参照になる

DELETE FROM r 
FROM Reg r 
     INNER JOIN RegDoc ON r.RegId = RegDoc.RegId 
     INNER JOIN Doc ON RegDoc.DocId = Doc.DocId 
WHERE Doc.Name LIKE N'%Title%' 

MSDN

DELETE FROM Sales.SalesPersonQuotaHistory 
FROM Sales.SalesPersonQuotaHistory AS spqh 
INNER JOIN Sales.SalesPerson AS sp 
ON spqh.BusinessEntityID = sp.BusinessEntityID 
WHERE sp.SalesYTD > 2500000.00; 
+0

Oughtta」より少し異なるアプローチが 'なし' ... FROM REG DELETEのこと? – Farray

+0

@Farray両方とも動作します。 – ean5533

+0

@Farray - 'DELETE FROM'は正しいですが、最初の' FROM'は実際には省略されるかもしれません。それは、 'OUTER'も冗長な' LEFT OUTER JOIN'を書いているようなものですが、私はまだそれを完全に書く傾向があります。 –

1

は、私見をこの

DELETE 
FROM Reg 
FROM Reg 
INNER JOIN 
      RegDoc ON Reg.RegId = RegDoc.RegId INNER JOIN 
      Doc ON RegDoc.DocId = Doc.DocId 
WHERE Doc.Name LIKE N'%Title%' 

以上の明確なを使用します。

DELETE Reg 
FROM Reg 
INNER JOIN RegDoc 
    ON Reg.RegId = RegDoc.RegId 
INNER JOIN Doc 
    ON RegDoc.DocId = Doc.DocId 
WHERE Doc.Name LIKE N'%Title%' 
1

あなたはこのようにそれを行うことができます:あなたが使用することができます

DELETE Reg 
FROM Reg 
INNER JOIN RegDoc ON Reg.RegId = RegDoc.RegId 
INNER JOIN Doc ON RegDoc.DocId = Doc.DocId 
WHERE Doc.Name LIKE N'%Title%' 
1

エイリアス、

DELETE r 
FROM Reg as r 
INNER JOIN RegDoc rd ON r.RegId = rd.RegId 
INNER JOIN Doc d ON rd.DocId = d.DocId 

あなたが実際にdelete rddelete dがあまりにもすることができます:あなたは、テーブル名と異なるのエイリアスを使用している場合、それは明確だけれども。

0

(すべて優れている)他の回答

DELETE FROM Reg 
WHERE Reg.RegID IN (SELECT RegDoc.RegId 
        FROM RegDoc 
         INNER JOIN Doc 
         ON RegDoc.DocId = Doc.DocId 
        WHERE Doc.Name LIKE N'%Title%') 
関連する問題