如何使用一个sql语句更新同一个表中的多个记录?

时间:2012-04-23 16:38:31

标签: sql sql-server tsql sql-server-2005

嘿,我想知道我是否能得到一些帮助:

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表格中没有相应的值。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分: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

答案 2 :(得分:0)

我认为你应该做这样的事情......

使用参数CREATE FUNCTION

FindUniqueQuestionId调用@questionanswergroupid

第二步:

UPDATE Questions_AnswerGroup
SET QuestionId = FindUniqueQuestionId(questionanswergroupid)
WHERE questionanswergroupid IN 
(
  SELECT questionanswergroupid FROM Questions_AnswerGroup WHERE "is duplicate" -- pseudo code
)