Как скопировать строку в sql
Перейти к содержимому

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

  • автор:

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

Как дублировать строку в 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);

Копирование строк в 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 бронзовых знаков

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

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