Обновить столбец той же таблицы - PullRequest
1 голос
/ 25 апреля 2019

У меня проблема при попытке обновить значение в базе данных строк.Мне нужно обновить (добавить 1 час) для конкретных пользователей в таблице USER.

SELECT DATE_ADD(dateOfBirth, INTERVAL 1 HOUR), dateOfBirth 
from USER 
where dateOfBirth like '%23:00:00%';

Но когда я выполню следующее ОБНОВЛЕНИЕ, отобразится ошибка

UPDATE USER
set dateOfBirth = DATE_ADD(dateOfBirth, INTERVAL 1 HOUR)
where id in (select u.id FROM USER u where u.dateOfBirth like '%23:00:00%');

Ошибка:

Error Code: 1093. You can't specify target table 'USER' for update in FROM clause

Возможно ли выполнить это предложение другим способом?

Ответы [ 3 ]

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

Что не так с:

UPDATE USER
SET dateOfBirth = DATE_ADD(dateOfBirth, INTERVAL 1 HOUR)
WHERE dateOfBirth like '%23:00:00%';
2 голосов
/ 25 апреля 2019

Подзапрос в обновлении не требуется.

UPDATE USER
set dateOfBirth = DATE_ADD(dateOfBirth, INTERVAL 1 HOUR)
where dateOfBirth like '%23:00:00%';
1 голос
/ 25 апреля 2019

Разве id не уникален в таблице? Если так:

update user u
    set dateOfBirth = DATE_ADD(dateOfBirth, INTERVAL 1 HOUR)
where time(u.dateOfBirth) = '23:00:00';

Обратите внимание, что dateOfBirth, по-видимому, является столбцом даты / времени (почему он содержит время, которое я не понимаю). Итак, функции даты / времени больше подходят для сравнения.

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