Как скопировать строку таблицы БД на MySQL одним запросом? #770039


#0 by D_Pavel
Собственно сабдж. Как скопировать строку таблицы БД на MySQL одним запросом? В таблице много колонок и ключевая тоже есть, все перечислять в тексте запроса не красиво. И они могут добавиться позже, переписывать запрос каждый раз тоже не красиво.
#1 by ДенисЧ
insert into select * from не катит?
#2 by D_Pavel
Нет конечно. Задублируется уникальный ключ и ошибка будет.
#3 by mehfk
Учитывая авторство ветки, рекомендуется запасаться попкорном.
#4 by D_Pavel
Учитывая что вопрос очень сложный, долго будешь хавать попкорн прежде чем кто-нибудь ответит.
#5 by mehfk
В таких случаях в приличном обществе говорят "Приятного аппетита".
#6 by Cyberhawk
А что значит "скопировать строку"? Вставить в конец совпадающую по всем полям?
#7 by D_Pavel
Да.
#8 by D_Pavel
Типа как когда в одноэске нажимаешь F9 когда находишься в форме списка.
#9 by D_Pavel
В 1 запрос по любому не получится. Можно хоть в 10, не принципиально, лишь бы поля не перечислять.
#10 by ДенисЧ
в мыскле вроде был insert or update, не?
#11 by trad
в понятие "все поля" ключевые поля входят?
#12 by D_Pavel
Да, есть там такое.
#13 by D_Pavel
Нет конечно. См ответ на
#14 by youalex
в ms можно через времянку, но это три запроса: select * into #temp from table1 t1 where t1.keyfield = 1 update #temp set keyfield = 2 insert into table1 select * from #temp
#15 by D_Pavel
Три запроса терпимо. Почему "= 2"? Не подходит.
#16 by D_Pavel
У меня получилось только в 5 запросов написать. Меньше никак не могу, всю голову сломал. Второй день думаю.
#17 by mingw
CREATE TEMPORARY TABLE foo AS SELECT * FROM parts WHERE id = X; UPDATE foo SET id=NULL; INSERT INTO parts SELECT * FROM foo; DROP TABLE foo; Самое главное а работе программиста что? Гугль и яндекс:
#18 by youalex
это пример, я же не знаю какая структура таблицы)
#19 by mingw
+ Когда требуется не обNULLить одно из полей а исключить. И не перечисляя все остальные. То извраты под каждую БД свои:
#20 by Broadbread
#21 by mingw
INSERT IGNORE INTO ... пропустит значения с дублем по ключу. Как это поможет ?
#22 by Broadbread
Ух ты. Я только забил строку поиска и почитал по диагонали результат. Интересно, зачем оно такое?
#23 by mingw
Для апдейта таблицы новыми записями. Не трогая имеющиеся. Дубли пропустит. Без ексепшена.
#24 by trad
какой принцип определения значения ключевого поля новой строки?
#25 by D_Pavel
Скопипастил сам не понял что. UPDATE foo SET id=NULL; Как ты к первичному ключу присваиваешь NULL? Это фантастика!
#26 by D_Pavel
Хорошая ссылка. Спасибо!
#27 by D_Pavel
Новое значение ключевого поля получается из сохраненного значения переменной плюс один. Значение переменной тоже увеличивается на единицу и сохраняется где-то в сервере.
#28 by D_Pavel
Есть еще хорошие идеи?
#29 by los_hooliganos
Обойди курсором, сделай запросы в цикле
#30 by mingw
Запросто присваиваю ключу NULL. Это временная таблица. Как в . Только синтаксис под mysql.
#31 by Жан Пердежон
3й вариант, закрывайте тему
#32 by mingw
... ON DUPLICATE KEY UPDATE       id=NULL ? да вариант вполне
#33 by D_Pavel
нельзя ключу присвоить NULL
#34 by mingw
Мдя. Нет слов. Пусть кто другой найдет.
#35 by D_Pavel
Вот специально для тебя проверку запустил: CREATE TEMPORARY TABLE foo AS SELECT * FROM list_queries WHERE id = 1602 Query executed OK, 1 row affected. (0.010 s) UPDATE foo SET id=NULL Error in query (1048): Column 'id' cannot be null
#36 by Господин ПЖ
нельзя просто так взять и присвоить null
#37 by Mikeware
ему можно. Ему даже можно выезжать на переезд при закрытом шлагбауме и перед приближающимся поездом...
#38 by D_Pavel
не третий, а второй. Молодец, хорошая ссылка
#39 by mingw
Каким образом (и зачем) для временной таблицы указал примари кей? Иногда можно Смотря на чем выезжать.
#40 by D_Pavel
Где я указывал для временной таблицы примари кей? Не вижу. Покажи откуда ты это взял. Примари кей создается сам, потому что он указан для таблицы на основании которой создается временная.
#41 by mingw
Ну так разреши NULL. Во временной.
#42 by D_Pavel
Ну так это и был тот вариант который я придумал вначале. Но он мне не нравится из-за лишней возни. То создается не нужный ключ, потом его удалять надо. Не красиво. Ничего лучше не придумать?
#43 by Cyberhawk
Так это уже неуниверсально - вдруг первичный ключ не число или дата, а вдруг он еще и составной...
#44 by D_Pavel
Первичный ключ не может быть датой
#45 by mingw
Уверены?
#46 by D_Pavel
Однако может
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С