2012-04-23 70 views
-1

嘿,我在想,如果我能得到一些幫助,這:如何用一個sql語句更新同一個表中的多個記錄?

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%' 

這讓我這個:

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 

謝謝提前提供任何幫助。我希望有一個單獨的更新語句,它將Questions_AnswerGroup中的重複問題替換爲Questions_AnswerGroup表中沒有相應值的問題表中的唯一值。

+0

您的示例輸出不可行 - 查詢中沒有引用「Row」。另外,你是否想要刪除第9-15行,或者保持原樣? – 2012-04-23 16:40:26

+0

對不起復制了結果集編號。空值不存在的記錄。 – kingblazi 2012-04-23 16:43:00

+0

所以,你想要做的是通過有效的'questionanswergroupid'遍歷所有具有多個'questionid'的行,並提取這些'questionanswergroupid'(第一個,可能是有效的)而是將它們與'questionid'配對,它們在你的表中,但有一個null'questionanswerid'? – 2012-04-23 17:37:37

回答

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,但它確實給了我一個沒有空值的結果集。我的預期結果是用questionanswergroupid列中沒有相應值的唯一標識符替換重複的questionids。 – kingblazi 2012-04-23 16:46:09

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 
) 
相關問題