SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 28.01.2010 19:43:28

Stepan
Участник
Зарегистрирован: 28.01.2010
Сообщений: 6

Запрос на добавление нескольких строк из одной таблицы в другую.

Уважаемые специалисты помогите составить запрос!
Пример условный:

Допустим есть табличrа figures:
id    form             color
---------------------------------
1     круг            красный
2     квадрат       синий
3     круг            зеленый
4     овал           синий
...
и так далее

Необходимо в таблицу new_figures (поля: id, form, material) добавить все строки из figures с полем color='синий' и при этом material присвоить значение 'дерево'.

Сам я слабо разбираюсь в mysql и обычно обхожусь простыми запросами типа select и insert (одной строки), но тут понадобилось одновременно добавить несколько строк. Заранее спасибо за ответы.

Неактивен

 

#2 28.01.2010 19:53:47

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Запрос на добавление нескольких строк из одной таблицы в другую.

INSERT INTO new_figures (id, form, material)
SELECT id, form, 'дерево' FROM figures WHERE color='синий'


Так у Вас в новой таблице будут значения id из старой.
Если хотите в новой новые же id, уберите поле id из запроса.

Неактивен

 

#3 28.01.2010 20:10:52

Stepan
Участник
Зарегистрирован: 28.01.2010
Сообщений: 6

Re: Запрос на добавление нескольких строк из одной таблицы в другую.

Огромное вам человеческое спасибо!!!

LazY написал:

INSERT INTO new_figures (id, form, material)
SELECT id, form, 'дерево' FROM figures WHERE color='синий'


Так у Вас в новой таблице будут значения id из старой.
Если хотите в новой новые же id, уберите поле id из запроса.

Вот еще такой вопрос: в таблицу new_figures вместо поля form входит figures.id. Причем у figures id типа varchar(4) (пример: "0104") и помимо сортировки по цвету надо отсортировать только (к примеру) фигуры с кодами от 0100 до 0120. Как в таком случае измениться запрос.

Отредактированно Stepan (28.01.2010 20:11:36)

Неактивен

 

#4 28.01.2010 20:29:21

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Запрос на добавление нескольких строк из одной таблицы в другую.

...
WHERE color = 'синий' AND CAST(id AS SIGNED) BETWEEN 100 AND 120

О CAST() см. http://dev.mysql.com/doc/refman/5.1/en/ … tions.html

Неактивен

 

#5 28.01.2010 23:05:19

Stepan
Участник
Зарегистрирован: 28.01.2010
Сообщений: 6

Re: Запрос на добавление нескольких строк из одной таблицы в другую.

Уважаемый, Lazy.

Большое вам спасибо за ответы. Чтобы я к вам больше не приставал последний вопросик)) Скажем так для понимания:
Мне не совсем понятно какие именно и в каком порядке указываются столбцы между SELECT и FROM в данном запросе

Неактивен

 

#6 29.01.2010 08:25:06

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

Re: Запрос на добавление нескольких строк из одной таблицы в другую.

Stepan написал:

Вот еще такой вопрос: в таблицу new_figures вместо поля form входит figures.id. Причем у figures id типа varchar(4) (пример: "0104") и помимо сортировки по цвету надо отсортировать только (к примеру) фигуры с кодами от 0100 до 0120. Как в таком случае измениться запрос.

Если я правильно вас понял, то


INSERT INTO new_figures (form, material) SELECT id, 'дерево' FROM figures
WHERE color = 'синий' AND CAST(id AS SIGNED) BETWEEN 100 AND 120;



Stepan написал:

Мне не совсем понятно какие именно и в каком порядке указываются столбцы между SELECT и FROM в данном запросе

Те значения которых вы хотите вставить в новую таблицу, в том порядке в каком они указаны в части INSERT.
В данном случае вы заполняете столбцы form и material новой таблицы, помещаяя в них значения id из старой таблицы и 'дерево' соответственно.

Неактивен

 

#7 29.01.2010 11:08:47

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Запрос на добавление нескольких строк из одной таблицы в другую.

Вась, я думаю, что в form новой таблицы из старой должно идти form, а не id.
(хотя я могу и ошибаться; вообще это топикстартеру виднее)

Неактивен

 

#8 29.01.2010 22:05:44

Stepan
Участник
Зарегистрирован: 28.01.2010
Сообщений: 6

Re: Запрос на добавление нескольких строк из одной таблицы в другую.

Т.е. правильнее всего это выглядит так:

INSERT INTO new_figures (id, material) SELECT figures.id, 'дерево' FROM figures
WHERE figures.color = 'синий' AND CAST(figures.id AS SIGNED) BETWEEN 100 AND 120;

Отредактированно Stepan (29.01.2010 22:07:40)

Неактивен

 

#9 29.01.2010 23:46:11

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Запрос на добавление нескольких строк из одной таблицы в другую.

Да, можно и так.
При составлении запросов вида INSERT-SELECT главное - это чтобы порядок столбцов совпадал. Здесь дело не в именах столбцов, а именно в порядке.

Неактивен

 

#10 30.01.2010 10:32:17

Stepan
Участник
Зарегистрирован: 28.01.2010
Сообщений: 6

Re: Запрос на добавление нескольких строк из одной таблицы в другую.

Спасибо большое! Ну мне чисто для понимания, дабы с каждым новым запросом сюда не бегать)))

Неактивен

 

Board footer

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