2012-04-23 3 views
-1

ねえ、私はこれでいくつかの助けを得ることができれば、私は思っていた:私はなりたい場所同じテーブルの複数のレコードを1つのSQL文で更新するにはどうすればよいですか?

questionid questionanswergroupid 
    31164   17133 
    31164   17464 
    31164   17465 
    31164   17466 
    31164   17467 
    31164   17468 
    31164   17469 
    31164   17470 
    31169   (null) 
    31173   (null) 
    31177   (null) 
    31181   (null) 
    31185   (null) 
    31189   (null) 
    31193   (null) 

これは、次のとおりです:

Row questionid questionanswergroupid 
    31164   17133 
    31169   17464 
    31173   17465 
    31177   17466 
    31181   17467 
    31185   17468 
    31189   17469 
    31193   17470 

おかげ

Select q1.questionid, qa.questionanswergroupid 
from questions q1 
full join Questions_AnswerGroup qa on qa.QuestionId=q1.QuestionId 
and qa.QuestionId=q1.QuestionId where q1.sectionid=7610 
and q1.questiontext like 'Date Filed with EMMA%' 

これは私にこれを取得します事前に助けてください。 Question_AnswerGroupの重複したquestionidsを、Question_AnswerGroupテーブル内の対応する値を持たない質問テーブルの一意の値に置き換える一意の更新ステートメントがあります。

+0

サンプル出力ができません - クエリで参照される 'Row'がありません。また、行9-15を削除するか、そのままにしますか? –

+0

申し訳ありませんが、結果セット番号をコピーしました。ヌル値が存在しないレコード。 – kingblazi

+0

だから、有効な 'questionanswergroupid'で複数の' questionid'を持つ行をすべて調べ、それらの 'questionanswergroupid'(最初のもの、おそらく有効なものの後ろのもの)を抽出し、代わりにそれらをあなたのテーブルにある 'questionid'のものとペアにしますが、null' questionanswerid'を持っていますか? –

答えて

0
Select q1.questionid, qa.questionanswergroupid 
from questions q1 
full join Questions_AnswerGroup qa on qa.QuestionId=q1.QuestionId 
and qa.QuestionId=q1.QuestionId where q1.sectionid=7610 
and q1.questiontext like 'Date Filed with EMMA%' and qa.questionanswergroupid is not null 
+0

これはquestionidsを置き換えませんが、それは私にヌルなしの結果セットを与えます。私の意図する結果は、duplicate questionidsを、questionanswergroupid列に対応する値を持たないユニークなquestionidsに置き換えることです。 – kingblazi

0

は、私はあなたがこのような何かを行うべきだと思い参加..

まずCREATE FUNCTIONと呼ばFindUniqueQuestionIdのparam @questionanswergroupid

セカンドで解雇行います

UPDATE Questions_AnswerGroup 
SET QuestionId = FindUniqueQuestionId(questionanswergroupid) 
WHERE questionanswergroupid IN 
(
    SELECT questionanswergroupid FROM Questions_AnswerGroup WHERE "is duplicate" -- pseudo code 
) 
関連する問題