2010-04-29 17 views
0

Я пытаюсь исправить предыдущее создание базы данных с таблицами, которые содержат данные, которые необходимо сохранить. Вместо воссоздания полностью новой базы данных, поскольку некоторые из таблиц все еще многократно используются, мне нужно разбить таблицу, которая существует, на две новые таблицы, которые я сделал. Теперь я пытаюсь вставить данные в две новые таблицы, и из-за дублирования данных в старой таблице мне трудно это сделать.Копирование таблицы базы данных

Старая структура таблицы:

ClientProjects clientId PK 
       clientName 
       clientProj 
       hashkey MD5 (clientname and clientProj) 

новые структуры таблиц:

client   clientId PK 
       clientName 

projects   queryId PK 
       clientId PK 
       projectName 

Я надеюсь, что это имеет смысл. Проблема в том, что в старой таблице, например, у вас есть клиенты с несколькими clientIds.

ответ

1

Предположив ваш CLIENTNAME уникален вы могли так что-то вроде:

INSERT client (clientId, clientName) 
    SELECT MAX(clientID), clientName FROM oldTable GROUP BY clientName; 

INSERT project (clientId, projectName) 
    SELECT n.clientId, o.projectName from client n 
     INNER JOIN oldTable o on o.clientName = n.clientName; 
Смежные вопросы