Как заполнить значения столбца - PullRequest
0 голосов
/ 02 мая 2018

SQL-скрипт для заполнения таблицы

Здравствуйте, У меня есть следующий вызов:

  • две таблицы: таблица1 и таблица2
  • table1 имеет справочный столбец (например, 'referencecolumn') для table2. Каждая запись в таблице1 должна указывать на одну запись в таблице2. Многие записи в таблице1 могут указывать на одну и ту же запись в таблице2

К сожалению, в table1 есть много кодов данных, которые имеют «неправильные» значения для table1.referencecolumn. Значения NULL или 0, и мне нужно заполнить их правильными значениями. К счастью, они являются многими другими столбцами указателей с «избыточностью» в таблицах от table1 до table2. Но они дают только вместе приемлемую ссылку на запись таблицы 2.

Например, записи об экзаменах студентов (таблица1) могут указывать только на одно правило экзамена (таблица2) через столбец table1.examregulation

Так что я думаю, что должен сделать следующее (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: спасибо! 'Мне неясно, хотите ли вы постоянно обновлять данные или просто изменить результат' - я хочу обновить / заполнить данные в таблице 1 один раз.

table1

+------+------+------+-----------------+
| 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            |
+------+------+------+-----------------+

1 Ответ

0 голосов
/ 02 мая 2018

Ваше заявление об обновлении должно быть.

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...