ProKiLL
@ProKiLL
Системный администратор

Как обновить таблицу?

Имеется:
2 таблицы (поручения - это главная таблица):
DROP TABLE IF EXISTS `поручения_temp`;
CREATE TABLE `поручения_temp` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `Задача` varchar(100) NOT NULL,
  `Вид_документа` varchar(100) NOT NULL,
  `рег_номер` varchar(100) NOT NULL,
  `рег_дата` varchar(100) NOT NULL,
  `Тема` varchar(250) NOT NULL,
  `Автор` varchar(100) NOT NULL,
  `Статус` varchar(50) NOT NULL,
  `Дата_исполнения` varchar(100) DEFAULT NULL,
  `Корреспондент` varchar(100) DEFAULT NULL,
  `Получено` varchar(100) DEFAULT NULL,
  `Исполнитель` varchar(100) DEFAULT NULL,
  `Примечание` varchar(250) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `Получено` (`Получено`)
) ENGINE=InnoDB AUTO_INCREMENT=113358 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

DROP TABLE IF EXISTS `поручения`;
CREATE TABLE `поручения` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `Задача` varchar(100) NOT NULL,
  `Вид_документа` varchar(100) NOT NULL,
  `рег_номер` varchar(100) NOT NULL,
  `рег_дата` varchar(100) NOT NULL,
  `Тема` varchar(250) NOT NULL,
  `Автор` varchar(100) NOT NULL,
  `Статус` varchar(50) NOT NULL,
  `Дата_исполнения` varchar(100) DEFAULT NULL,
  `Корреспондент` varchar(100) DEFAULT NULL,
  `Получено` varchar(100) DEFAULT NULL,
  `Исполнитель` varchar(100) DEFAULT NULL,
  `Примечание` varchar(250) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `Получено` (`Получено`)
) ENGINE=InnoDB AUTO_INCREMENT=113558 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;


Необходимо:
Обновить поле статус.
Поле статус в таблице поручения обновляется при условии что поручения_temt.Получено=поручения.Получено

Вопрос:
Как это реализовать?

Мои решения:
пробовал следующую комбинацию:
update поручения set Статус = (Select Статус from поручения_temp where Получено = поручения.Получено) where Получено = поручения_temp.Получено;

Выдает ошибку:
1054 - Unknown column 'поручения_temp.Получено' in 'where clause'

Почему он пишет несуществующий столбец, если столбец есть в наличии.

Примечание:
В таблицах ~110 000 записей
  • Вопрос задан
  • 2242 просмотра
Решения вопроса 1
ProKiLL
@ProKiLL Автор вопроса
Системный администратор
Ответ был такой очевидный, что его не кто и не увидел.
Текст кода:
update `поручения` `o`, `поручения_temp` `ot` 
set `o`.`Статус` = `ot`.`Статус`
where `o`.`Получено` = `ot`.`Получено`;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
27 нояб. 2024, в 17:41
2000 руб./за проект
27 нояб. 2024, в 17:26
1 руб./за проект
27 нояб. 2024, в 17:17
3000 руб./за проект