用于完成表的SQL脚本
您好, 我有以下挑战:
不幸的是,table1中有许多datarecods,它们对table1.referencecolumn有'错误'的值。值为NULL或0,我需要用正确的值填充它们。 幸运的是,它们是table1到table2中的许多其他“冗余”指针列。但它们只能产生对table2记录的可接受引用。
例如,学生考试记录(表1)可能只通过列table1.examregulation
指向一个考试规则(表2)所以我认为我必须执行以下操作(SQL或python),但我是SQL和python的新手:
FOREACH table1record where table1.referencecolumn is NULL or 0
IF
((table1.column1 == table2.column1) AND (table1.column2 == table2.column2) AND
AND (table1.column3 == table2.column3) )
THEN SET table1.referencecolumn = table2.referencedcolumn
ENDIF
END FOREACH
@a_horse_with_no_name:谢谢! '我不清楚你是想永久更新数据还是只是改变结果' - 我想更新/填充table1中的数据一次。
表1
+------+------+------+-----------------+
| col1 | col2 | col3 | referencecolumn |
+------+------+------+-----------------+
| ABB | 2000 | 52 | NULL |
| AKB | 2001 | 61 | 0 |
| INB | 1998 | 77 | 0 |
| ENM | 2010 | 56 | NULL |
+------+------+------+-----------------+
table2
+------+------+------+------------------+
| col1 | col2 | col3 | referencedcolumn |
+------+------+------+------------------+
| ABB | 2000 | 52 | 254 |
| AKB | 2001 | 61 | 587 |
| INB | 1998 | 77 | 665 |
| ENM | 2010 | 56 | 322 |
+------+------+------+------------------+
RESULT after SQL UPDATE or run script: table1 looks like this:
+------+------+------+-----------------+
| col1 | col2 | col3 | referencecolumn |
+------+------+------+-----------------+
| ABB | 2000 | 52 | 254 |
| AKB | 2001 | 61 | 587 |
| INB | 1998 | 77 | 665 |
| ENM | 2010 | 56 | 322 |
+------+------+------+-----------------+
答案 0 :(得分:1)
您的更新声明应为。
UPDATE Table1 t
SET referencecolumn = s.referencedcolumn
FROM Table2 s
WHERE t.col1 = s.col1
AND t.col2 = s.col2
AND t.col3 = s.col3;