Выбрать из таблицы и скопировать все выбранное в нее же

Dreamer76

Through thorns
Выбрать из таблицы и скопировать все выбранное в нее же

Прошу помощи!

Есть таблица.. в которой огромное количество комплектующих.
Среди этих комплектующих есть 5 с одним, уникальным номером.

Задача: каким-то "волшебным" образом сделать select * from эта таблица where uniq = 111111 (как пример) ...

Все, что выбрано, скопировать СЮДА ЖЕ... в эту же таблицу, но уже с другим уникальным номером (64564564).


select * from table11 where uniq = 111111;

железка 1 | 111111
железка 2 | 111111
железка 3 | 111111
железка 4 | 111111

копируем в table11 с номером 64564564. Получаем:

железка 1 | 64564564
железка 2 | 64564564
железка 3 | 64564564
железка 4 | 64564564

Т.е. получается две конфигурации, одинаковые, но с разными uniq'ами.


Есть ли возможность это реализовать "малой кровью" ?
 

Dreamer76

Through thorns
Спасибо!

-~{}~ 08.08.06 15:08:

Panchous.
Еще вопрос вдогонку. А как мне при таком запросе еще и uniq на лету сменить? (в задаче именно этот момент)

INSERT INTO `table11` SELECT * FROM `table11` where uniq = 111111;

но мне же не надо просто копировать. Мне надо еще и uniq присвоить всему, что выбрано - 64564564;

Что-то типа:

INSERT INTO `table11` (uniq) values ('64564564') SELECT * FROM `table11` where uniq = 111111;

но это не работает ((
 

Dreamer76

Through thorns
Нет. Я знаю как их выбрать.
Я выбираю все строки, uniq которых равен 111111.
Потом мне эти строки надо положить в эту же таблицу, но уже с новыми uniq для каждой строки - 64564564.
 

Panchous

Павел
а почему бы тебе сразу не выбирать _нужные_ тебе значения для вставки по твоему условию?
 

Dreamer76

Through thorns
я именно это и хочу сделать.
INSERT INTO `table22` SELECT * FROM `table11` where uniq = 111111;

это пройдет, если мне надо скопировать все строки из table11 с uniq номерами 111111 в таблицу table22.

а так как я копирую их не в другую таблицу, а сюда же (из table11 в table11):

INSERT INTO `table11` SELECT * FROM `table11` where uniq = 111111;

то мне надо сменить uniq для всех строк. С "111111" на "64564564"... У меня не по id строки идут, а по уникальным номерам (так было задумано).

-~{}~ 08.08.06 15:26:

я же говорю, что в идеале было бы, если бы этот запрос работал:

INSERT INTO `table11` (uniq) values ('64564564') SELECT * FROM `table11` where uniq = 111111;

берутся все из table11 с номером 111111 и кладется в table11 с номером 64564564. Но он почему-то не работает((
 

Panchous

Павел
зачем тебе выбирать все поля, если тебе нужно только name?
...
+ новый uid
 

Dreamer76

Through thorns
мне нужно именно все поля выбрать и сделать точную копию в эту же таблицу, но с другим uniq
 

Dreamer76

Through thorns
а выбирать как, если не указывать uniq? :) выборка же по uniq идет !!! ))
 

Panchous

Павел
Ты понимаешь разницу между тем КАКИЕ ПОЛЯ ты вибираешь и УСЛОВИЕМ ВЫБОРКИ (оно остается прежним)?
 

Dreamer76

Through thorns
я понимаю то, что я выбираю все, что имеет отношение к uniq = 111111, а так же то, что мне надо сделать копию этого всего сюда же, но с новым uniq

-~{}~ 08.08.06 15:38:

INSERT INTO `table22` SELECT * FROM `table11` where uniq = 111111;


эта тема ПРЕКРАСНО срабатывает.

но мне нужна информация уже с новыми uniq
 

Panchous

Павел
я ты можешь сообразить заменить * на _нужные_ тебе данные?

(тебе НЕ НАДО выбирать ВСЕ - все поля, кроме uniq...)
 

Dreamer76

Through thorns
Уважаемый Panchous :) ты задачу понимаешь?

хорошо. пусть я не буду выбирать ВСЕ данные из таблицы:

INSERT INTO `table11` SELECT uniq FROM `table11` where uniq = 111111;

но как мне uniq поменять на новый??? ))

Есть строка:

1 | hello | 111111

я хочу сделать в этой же таблице строку:

541 | hello | 64564564

(1 и 541 - порядковые номера, на них не смотрим)

т.е. меняется 111111 на 64564564. 2 (две) одинаковые строки с разными uniq

INSERT INTO `table11` SELECT UNIQ FROM `table11` where uniq = 111111;

а куда мне вставить 64564564???
 

HEm

Сетевой бобер
Dreamer76
а что мешает сделать UPDATE ?
делаешь копию таблицы, затем выполняешь UPDATE, все
 
Сверху