обновить столбец родительского ключа, где есть нули - PullRequest
0 голосов
/ 21 февраля 2020

Надеюсь, что некоторые могут помочь. Чего я хочу достичь, это обновить столбец TS_PARENT_TS_ID с помощью TS_ID column(Primary Key). используя строки 2 и 3 в качестве примеров, если вы посмотрите на имя столбца (TS_TERM_TYPE_NAME), у вас есть "MAIN" непосредственно под ним (строка 3), равное "RELATED". Они оба связаны друг с другом, поэтому должны иметь одинаковые внешние ключи в столбце (TS_PARENT_TS_ID), поэтому в основном они должны иметь значение 1 в столбце (TS_PARENT_TS_ID). Другой способ думать об этом - в TS_TERM_TYPE_NAME столбце ALL "MAIN", за которым следует "RELATED(s)", принадлежат одному семейству и, следовательно, он должен иметь тот же (TS_PARENT_TS_ID). Чтобы привести другой пример, см. Строку (7-9). Первичный ключ равен 4 (TS_ID), следовательно, (TS_PARENT_TS_ID) будет 4 для "MAIN", а 2 следующих "СВЯЗАННЫХ" (строки 8 и 9)

- см. Снимок экрана ниже

enter image description here

1 Ответ

0 голосов
/ 21 февраля 2020

Ключевыми словами в вашем вопросе являются «непосредственно под» и «в одной семье». Что решает о принадлежности к одним и тем же группам? Ваши данные свидетельствуют о том, что это то же самое TS_NOTATION (и / или MSG). Если это так, то вы можете использовать merge:

merge into agriculture a
using (select ts_notation, min(ts_parent_ts_id) id
         from agriculture 
         where ts_term_type_name = 'RELATED'
         group by ts_notation) b
on (a.ts_notation = b.ts_notation and a.ts_term_type_name = 'MAIN')
when matched then update set a.ts_parent_ts_id = b.id

dbfiddle demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...