SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.06.2010 02:03:30

test
Участник
Зарегистрирован: 03.06.2010
Сообщений: 7

Изменение значения одной колонки в "SELECT *"

INSERT INTO `backup` SELECT * FROM `sources` WHERE `something` = '" . $something . "';


Таблица `backup`
`backup_id`, `something`, `author`, `active`

Таблица `sources`
`source_id`, `something`, `author`, `active`

Оба поля `source_id` и `backup_id` autoincrement + primary. Первый перенос ряда из `sources` в `backup` осуществляется без проблем. Последующие ругаются на duplicate key `backup_id`, ON DUPLICATE KEY UPDATE не подходит, так как каждый раз необходимо создавать новую запись в `backup`, а не редактировать имеющуюся.
Вариант ручного ввода необходимых полей не совсем хотелось бы применять, если существует возможность вместо реального значения поля `source_id` передать '0'.

Пробовал вариант:
INSERT INTO `backup` SELECT *, `source_id` = '0' AS `source_id` FROM `sources` WHERE `something` = '" . $something . "';

Ругается не равное количество столбцов, хотя если посмотреть результат данного SELECT'а, то видно что новых полей не создаётся, а действительно подменяется значение `source_id` как и задумывалось.

Отредактированно test (07.06.2010 02:04:19)

Неактивен

 

#2 07.06.2010 11:37:54

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Изменение значения одной колонки в "SELECT *"

Вместо * перечислить необходимые поля. `source_id` и `backup_id` вообще упоминать не надо, раз это autoincrement.


INSERT INTO `backup` (`something`, `author`, `active`) SELECT `something`, `author`, `active` FROM `sources` WHERE `something` = '" . $something . "';

Неактивен

 

#3 07.06.2010 19:21:00

test
Участник
Зарегистрирован: 03.06.2010
Сообщений: 7

Re: Изменение значения одной колонки в "SELECT *"

Ещё раз акцентирую внимание:

test написал:

Вариант ручного ввода необходимых полей не совсем хотелось бы применять, если существует возможность вместо реального значения поля `source_id` передать '0'.

Данный запрос будет собираться скриптом автоматически под различные по количеству столбцов и имён таблицы, и хотелось бы избежать лишних циклов.

Отредактированно test (07.06.2010 19:31:54)

Неактивен

 

#4 07.06.2010 20:55:05

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Изменение значения одной колонки в "SELECT *"

Подменить одно поле таким образом нельзя.

Неактивен

 

#5 08.06.2010 03:00:13

test
Участник
Зарегистрирован: 03.06.2010
Сообщений: 7

Re: Изменение значения одной колонки в "SELECT *"

Спасибо!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson