Перейти к содержимому

Как скопировать строку в sql

  • автор:

Копирование строк в SQL

Добрый день! Помогите плз. разобраться. Нужно сделать копирование товаров в пределах одной таблицы sql. Например есть таблица товаров интерне-магазина и есть похожие товары которые лень вносить каждый раз заново, а было бы удобно нажать на похожем товаре «Копировать», подправить нужные данные и добавить как новый товар. Хотел сделать на основе функции удаления, заменив $action на $action_copy а «delete» на «copy», но не получилось

$action = $_GET["action"]; if (isset($action)) < $id = (int)$_GET["id"]; switch ($action) < case 'delete': if ($_SESSION['delete_tovar'] == '1') < $delete = mysql_query("DELETE FROM category WHERE ",$link); >else < $msgerror = 'У вас нет прав на удаление товаров!'; >break; > >

Отслеживать

3,732 2 2 золотых знака 16 16 серебряных знаков 40 40 бронзовых знаков

Как дублировать строку в mysql?

Есть таблица из 10 полей, первое id autoincrement key.
Как создать новую запись. скажем из строки с копируя все поля, кроме id которое создается автоматически.

Как записать «красиво» такой запрос?

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Дублировать строку двухмерного массива, содержащую максимальный элемент
Помогите решить задачки по двумерным массивам пожалуйста. Туговато даются мне массивы. С# 2 задача.

как отправить строку из таблицы (php, сформированной из mysql) в контейнер ajax при нажатии на строку 2ым клик
Доброго времени суток) уважаемые программисты столкнулся со сложной задачей, даже не знаю в той ли.

Как добавить строку БД mysql?
вывожу строки так: procedure.

Как удалить строку из таблицы mysql?
Как удалить строку из таблицы mysql, только не update, а полностью, чтоб не осталось пустой.

13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
Красиво, имхо, не получится. Придется перечислять все имена полей:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
INSERT INTO `table` SELECT * FROM `table` WHERE `id` = 42; -- Ошибка: дублируется INSERT INTO `table` (`id`, `foo`, `bar`, . , `lol`) SELECT NULL, `foo`, `bar`, . , `lol` FROM `table` WHERE `id` = 42; -- надежно - все поля указаны явно и соответствуют сами себе INSERT INTO `table` (`foo`, `bar`, . , `lol`) SELECT `foo`, `bar`, . , `lol` FROM `table` WHERE `id` = 42; -- тоже надежно - знаем, что там есть id и он никуда не денется INSERT INTO `table` SELECT NULL, `foo`, `bar`, . , `lol` FROM `table` WHERE `id` = 42; -- НЕнадежно - стоит изменить структуру - запрос станет нерабочим

172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490

Нагуглил темку эту. Вопрос возник:
вот у меня задача дублировать запись. В таблице есть уникальное поле guid, но оно не autoincrement. Ну и еще поле dt (datatime) тоже будет новое.

Как бы реализовать попроще?

На ум приходит только:
1. извлечь перечень полей;
2. пройтись foreach-ем по ним, сформировав строку для insert-а;
3. извлечь данные копируемой строки;
4. заменить guid и dt;
5. сформировать insert и выполнить

Добавлено через 5 минут
и еще вопросик есть.
вот есть возможность записать insert так

INSERT INTO TABLE SET k1 = v1, k2 = v2, k3 = v3, k4 = v4, k5 = v5
INSERT INTO TABLE (v1,v2,v3,v4,v5) VALUES (k1,k2,k3,k4,k5)

кто знает, в чем разница?

Добавлено через 27 минут
в общем так, если кому понадобится

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
include('db.php'); // Подключаемся к серверу MySQL $db = mysql_connect($hostname, $username, $password) or die('connect to database failed'); // Выбираем нужную БД mysql_select_db($bd) or die('db not found'); //функция формирования guid function guid(){ mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up. $charid = strtoupper(md5(uniqid(rand(), true))); $hyphen = chr(45);// "-" $uuid = substr($charid, 0, 8).$hyphen .substr($charid, 8, 4).$hyphen .substr($charid,12, 4).$hyphen .substr($charid,16, 4).$hyphen .substr($charid,20,12); return $uuid; } $newguid=guid(); //выбираем копируемые данные $q="SELECT * FROM `".$tbl."` WHERE `guid` = '".$_GET['guid']."';"; $r = mysql_query($q) or trigger_error(mysql_errno() . ' ' . mysql_error() . ' query: ' . $q); $value=mysql_fetch_assoc($r); //формируем запрос для вставки новой строки $q="INSERT INTO `".$tbl."` SET "; foreach ($value as $k=>$v) { if ($k<>'guid' and $k<>'t') $q=$q."`".$k."`='".$v."',"; } $q=$q."`t`=".time().",`guid`='".$newguid."';"; //выполняем запрос mysql_query($q) or trigger_error(mysql_errno() . ' ' . mysql_error() . ' query: ' . $q); //закрываем соединение с БД mysql_close($db);

Как копировать строку в MySQL?

Ошибка: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘UPDATE temp_table SET delivery_adress=’Боровицкая’, delivery_time=’31» at line 2

Изначально код был только такой и всё прекрасно работало:

UPDATE Users SET delivery_status=3, delivery_adress='$delivery_adress', delivery_time='$delivery_time' WHERE ";

Т.е. я где-то накосячил во временной таблице. Помогите, пожалуйста, первый раз такое делаю.

  • Вопрос задан более трёх лет назад
  • 2042 просмотра

sql — скопировать строку и вставить её изменив одно значение

sql — скопировать строку и вставить её изменив одно значение
Ищу наиболее простой, комфортный способ.
Реально ли на чистом SQL . если нет — воспользоваться Excel ?! благодарю.

Горбушка
Ищу её.

Регистрация 2 Май 2008 Сообщения 3.444 Реакции 2.524

Т.з. подробнее.
К примеру, можно такое:

UPDATE `table` SET `view` = `view` + 1;
okyrok
Создатель

Регистрация 14 Июл 2014 Сообщения 24 Реакции 12

  • a. эту строку не изменять
  • б. добавить в эту же таблицу строку 1, vasya, ivanov, 22
SELECT * FROM `table` WHERE name = vasya

-в этой выборке у всех заменить бы string1 на ivanov, типа как тут

UPDATE `table` SET `string1` = ivanov;

ps Хреновато, наверно, написал
pps и, Горбушка, пора статус менять)

AdamK
Создатель

Регистрация 10 Мар 2009 Сообщения 15 Реакции 4
Можно так:
1. Создать временную таблицу:

create table tmp_table as select id. 'ivanov' where name = 'ivanov'

2. Вставить в целевую таблицу

 insert into table select * from tmp_table

3. Удалить временную таблицу

 drop table tmp_table
latteo
Эффективное использование PHP, MySQL

Регистрация 27 Фев 2008 Сообщения 1.603 Реакции 1.565
1. Создать временную таблицу:

Зачем временную то создавать?

INSERT INTO `table` SELECT id, name, 'ivanov', string2 FROM `table` WHERE name = 'vasya'

В более сложном случае:

INSERT INTO `table` (name, string1, string2) SELECT name, 'ivanov', string2 FROM `table` WHERE `name` = 'vasya'

INTO `table` (name, string1, string2) — перечисляем поля, для сохранения автоинкремента id, иначе id будет повторятся
SELECT name, ‘ivanov’, — помимо выборки полей таблицы мы можем жестко прописать SELECT строки, как вы понимаете она будет одинаковой для всех выбранных row

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *