Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объединение столбцов и добавление автоинкримента 
V
    Опции темы
Just123
Дата 18.2.2010, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Есть таблица со следующим содержанием:
| 1 столбец | 2 столбец | 3 столбец | 4 столбец

Требуется объединить 1 со  2 столбцом, и 3 с 4 и добавить еще один столбец с автоинкриментом.
В таблице около 400 записей. Тип каждого столбца integer.

Под объединить я понимаю следующее:

Код

1 столбец | 2 столбец
111           |  222
333           | 444


После объединения, должно вместо этих двух столбцов, остаться одно, со следующим содержанием:
111222
333444


Подскажите пожалуйста, как это можно сделать?
PM MAIL   Вверх
Akina
Дата 18.2.2010, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Just123 @  18.2.2010,  22:53 Найти цитируемый пост)
Требуется

Создать новую таблицу требуемой структуры и вставить в неё данные (insert ... select)
Цитата(Just123 @  18.2.2010,  22:53 Найти цитируемый пост)
объединить 1 со  2 столбцом

Код

cast(concat(fld1,fld2) as unsigned)

Цитата(Just123 @  18.2.2010,  22:53 Найти цитируемый пост)
добавить еще один столбец с автоинкриментом

не трогай - сам заполнится



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Just123
Дата 18.2.2010, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



т.е. нужно создать таблицу, следующего вида:

Код

id | field1 | field2


Затем в таблице с данными выполнить команду 
Код

cast(concat(1 столбец, 2 столбец) as unsigned)

 
Затем выбрать все данных и вставить в новую таблицу.

Всё верно?

Большое спасибо за помощь.
PM MAIL   Вверх
Akina
Дата 19.2.2010, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Just123 @  19.2.2010,  00:49 Найти цитируемый пост)
Затем в таблице с данными выполнить команду 

Нет! написАть запрос, который выбирает из старой таблицы данные, выполняет указанные преобразования и складывает результат в таблицу новую. После чего этот запрос выполнить.

Добавлено через 44 секунды
Или, как вариант, ДОБАВИТЬ поля в таблицу, выполнить update с вычислением нового контента, а потом дропнуть старые поля.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 19.2.2010, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(Akina @  18.2.2010,  22:47 Найти цитируемый пост)
cast(concat(1 столбец, 2 столбец) as unsigned)

Код

1 столбец | 2 столбец
----------+----------
1         |  222
122       |  2

 smile 

Это сообщение отредактировал(а) Zloxa - 19.2.2010, 11:13


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 19.2.2010, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



А это уже проблемы ТС.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
sTa1kEr
Дата 20.2.2010, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 7
Всего: 146



Нумерацию строк можно так-же сделать без автоинкрементного поля при помощи переменной.
Код

SET @i = 0;
SELECT 
    @i := @i +1 AS autoincrement,
    CONCAT(`1 столбец`, `2 столбец`),
    CONCAT(`3 столбец`, `4 столбец`)
FROM table;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.