2016-04-11 17 views
2

私は次のクエリの解決策を得ようとしています。クエリは、新しいテーブルに挿入する前に条件を削除する必要があります

私はテーブルに

 
MainId  SubId  Code 
A01   r01  pre1 
A01   r02  pre1 
A01   s01  post1 
A01   s02  post1 
A01   s03  post1 
A02   s04  post1 
A02   s05  post1 
A02   s06  post1 
A03   r05  pre1 
A03   r06  pre1 

期待された結果、次のしている:私はメインのidがPRE1持っていますが、状態はidがPRE1とPOST1両方の値を満たす必要があり、メインであるすべてのレコードを削除したい

 
MainId  SubId Code 
A01   s01  post1 
A01   s02  post1 
A01   s03  post1 
A02   s04  post1 
A02   s05  post1 
A02   s06  post1 
A03   r05  pre1 
A03   r06  pre1 

を。

上記の例の場合、A01にはpre1とpost1の両方があることを意味します。これは、大文字と小文字が完全になり、pre1でレコードをもう必要としないため、削除したいと考えています。

MAINIDにpre1またはpost1のみがある場合はそのまま残してください。

これ以降、結果セットを新しいテーブルにも転送したいと思います。

+0

は唯一の "PRE1" と "POST1は、" コードであっすることができますか? – Quassnoi

+0

それはすべてが削除されたように見えますが、私はまだpre1の値を削除している同じmainidのpost1のvauesを保持する必要があります。 – user2040021

+0

そうですね、最初はあなたの要件をよく理解できませんでした。あなたがBEGIN TRAN/ROLLBACKであなたが読んでいるすべてを封じ込めていることを願っています! – Quassnoi

答えて

0

はこれを試してみて、それはあなたが欲しいものを行う必要があります。

DELETE FROM #TEMP 
WHERE CODE = 'PRE1' 
AND MAIN_ID IN ( 
SELECT MAIN_ID FROM #TEMP 
WHERE CODE = 'POST1') 
+0

はいこれも解決策です – user2040021

+0

ありがとう、助けがあれば願っています。答えをupvote/acceptしてください。 – asktonishant

+0

私は15の評判か何かを得る必要があると言います。 – user2040021

2

私は、これは動作するはずだと思う:

DELETE yourTable 
WHERE Code = 'pre1' 
AND MainId IN (SELECT MainId FROM yourTable WHERE Code = 'post1') 
+0

ありがとうピーター、これは1つです。 – user2040021

+0

助けがあれば、答えを受け入れてください:http://stackoverflow.com/help/someone-answers –

関連する問題