我希望这是有道理的,让我详细说明一下:

有一个测验项目的跟踪数据表,其中每一行都有..

QuestionID和AnswerID(每个人都有一张桌子).因此,由于一个bug,有一堆问号被设置为空,但相关回答ID的问号在答案表中.

假设QuestionID为NULL,AnswerID为500,如果我们转到答案表,找到AnswerID 500,就会有一列带有QuestionID,应该在NULL值所在的位置.

因此,基本上我想将每个空的QuestionID设置为等于在trackings表中AnswerID的答案行的AnswerID表中找到的QuestionID(与正在编写的空QuestionID相同的行).

我该怎么做?

UPDATE QuestionTrackings
SET QuestionID = (need some select query that will get the QuestionID from the AnswerID in this row)
WHERE QuestionID is NULL AND ... ?

我不知道如何才能让它将QuestionID分配给匹配答案ID中的QuestionID...

推荐答案

update q
set q.QuestionID = a.QuestionID
from QuestionTrackings q
inner join QuestionAnswers a
on q.AnswerID = a.AnswerID
where q.QuestionID is null -- and other conditions you might want

我建议在运行更新之前判断要更新的结果集(相同的查询,只需 Select ):

select *
from QuestionTrackings q
inner join QuestionAnswers a
on q.AnswerID = a.AnswerID
where q.QuestionID is null -- and other conditions you might want

尤其是每个答案id是否只有一个关联的问题id.

Sql相关问答推荐

SUM(条件)在Oracle?

retrofit AWS Athena中的JSON

如何优化我的功能以减少花费的时间?

你能过滤一个列表只返回多个结果吗?

PATINDEX中与[A-Z]匹配(U除外)的正则表达式

SQL将三个表中的三列组合为一列

基于开始/结束日期重叠的BigQuery突发行

如何使子查询在UPDATE语句期间获得最新更新

根据日期 Select ID 的上一条记录

Athena 计算从日期到当前时间戳的每月计数

删除行而不使数据库超载

JSON_VALUE 不适用于提取的 json 中的嵌套路径

在 SQL Server 中查找重复项

SQL Select 字母范围没有给我任何东西

删除每个不同日期中未 Select 的最短最长时间

获取记录的上一个值,并将其与当前值一起显示

批量更改WooCommerce中所有产品的税收状态

如何在 PL/SQL 中区分返回的 XML 值?

如果当前日期是一周中的某一天,则从另一天提取结果

创建一个将层次 struct 级别放入列中的查询