2011-08-12 22 views
5

したがって、SQL ServerにはテーブルAとテーブルBがあり、カラムaとbにはそれぞれテーブルがあります。私は疑似クエリコマンドで次のようにしたいが、私はそれを理解していないようだ。2つのテーブルを含むSQL Serverの削除クエリ

私は

DELETE FROM A 
WHERE a < 100 "and only if these selected (for deletion) values don't exist in column b in table B" 

に理由は、私はテーブルAから一部のデータを削除しようとしているが、それはaの化合物。表とB.bの値との間に制約があることを言って私にエラーを与えているということですしたいです。

これにエイリアスが含まれていますか?それは混乱..です

+0

? –

答えて

11

は、SQL Server 2005またはそれ以降を使用している場合は、これを試してみてください:SQL Server 2000の

DELETE FROM TableA 
WHERE a < 100 AND 
a NOT IN (SELECT B FROM TableB) 

を、これは動作するはずです:

使用しているSQL Serverのどのバージョンの
DELETE ta 
FROM TableA as ta 
LEFT JOIN TableB as tb 
ON ta.a = tb.b 
WHERE ta.a < 100 AND tb.b IS NULL 
+0

私は質問から確信していませんでしたが、制約違反があった場合、TableB.bはTableAへの外部キー参照ですか?もしそうなら、適切な句の 'a'に 'id'を代入する以外に、削除の形式に違いがありますか? – shelleybutterfly

+0

うーん、わかってるのか分かりません。私はあなたの外来キーの仮定に同意します。この削除は基本的にTableBから参照されていない、TableBから必要と思われるレコードをTableAから削除します。 –

+0

@Abe Miessler、あなたの最初のクエリはうまくいった!それはMSSQLのように見えるの制限を束縛することができます..?私は最近、MySQLを学んでいますが、SQL Server Management Studioにはこれらの機能はありません。 – musicliftsme

関連する問題