mysql обновление из другого столбца ошибок таблицы не может быть нулевым - PullRequest
0 голосов
/ 06 мая 2020

У меня есть такая структура таблицы:

point
===============================================
column  | type | comment
===============================================
id      | int  | primary key (auto increment)
type    | enum | 'paradise', 'culinary'
post_id | int  | foreign key to culinary.id
user_id | int  |
===============================================

culinary
===============================================
column  | type         | comment
===============================================
id      | int          | primary key (auto inc)
title   | varchar(255) | 
user_id | int          |
===============================================

Я хочу обновить поле point.user_id, используя значения из culinary.user_id. но я получил сообщение об ошибке column 'user_id' cannot be null, хотя, когда я выбираю каждую таблицу, нет записей с нулевым user_id ...

вот что я пробовал:

-- first attempt gets error message > 1048 - Column 'user_id' cannot be null
update `point`
set `user_id` = (
  select `culinary`.`user_id`
  from `culinary`
  where `culinary`.`id` = `point`.`post_id`
  and `point`.`type` = 'culinary'
)

-- second attempt but still the same error message
update `point`
set `user_id` = (
  select `culinary`.`user_id`
  from `culinary`
  where `culinary`.`id` = `point`.`post_id`
)
where `type` = 'culinary'

1 Ответ

1 голос
/ 06 мая 2020

Использовать соединение:

update `point` p
inner join `culinary` c on c.`id` = p.`post_id`
set p.`user_id` = c.`user_id`
where p.`type` = 'culinary'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...