Обновить таблицу с помощью выбора и где - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть две таблицы:

table ficha_atendimento
int id
string cidadaos_cns

table cidadaos
int id
string cns

Мне нужно создать столбец int cidadaos_id в таблице ficha_atendimento_cidadao, и мне нравится заполнять его идентификатором из таблицы cidadaos, например:

insert into ficha_atendimento
set cidadao_id = select id from cidadaos where cidadaos.cns = ficha_atendimento.cns

Но это не работает ... Любая помощь?

Ответы [ 3 ]

2 голосов
/ 03 апреля 2019

Для этого вам нужно выполнить две отдельные операции. Во-первых, добавьте столбец cidadao_id в таблицу. Затем UPDATE его значения из таблицы cidados:

ALTER TABLE ficha_atendimento ADD COLUMN cidadao_id INT NOT NULL;
UPDATE ficha_atendimento f
JOIN cidadaos c ON c.cns = f.cns
SET f.cidadao_id = c.id

Вы также можете добавить FOREIGN KEY к значению cidadao_id:

ALTER TABLE ficha_atendimento ADD FOREIGN KEY (cidadao_id) REFERENCES cidadaos(id)
1 голос
/ 03 апреля 2019

Принципы таковы:

INSERT INTO table2 (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM table1 WHERE condition;

Если вы придерживаетесь правил, я думаю, что вы можете запустить свой код.И плюс, если у вас есть данные для демонстрации, это поможет.

1 голос
/ 03 апреля 2019

Вы, кажется, хотите update:

update ficha_atendimento fa join
       cidadaos c
       on c.cns = fa.cns
    set fa.cidadao_id = c.id ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...