Вставить данные из существующего / несуществующего столбца в другой из вычисленного MySQL результата? - PullRequest
0 голосов
/ 13 апреля 2011

Использование функции для разделения строк: http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/

SELECT SUBSTRING_INDEX( SUBSTRING_INDEX( fullname,  ' ', 1 ) ,  ' ', -1 ) AS firstname,
SUBSTRING_INDEX( SUBSTRING_INDEX( fullname,  ' ', 2 ) ,  ' ', -1 ) AS lastname
FROM users;

Я получаю следующие результаты:

firstname | lastname |

    john      doe

    jane      doe

У меня есть следующие вопросы:

1.) Как вставить значения в столбцы, которые уже существуют в той же таблице?

2.) Как вставить значения в столбцы, которые не существуют в той же таблице?

Конечно, две колонки firstname | lastname

1 Ответ

0 голосов
/ 13 апреля 2011

Чтобы вставить эти значения:

INSERT INTO users (firstname, lastname)
SELECT SUBSTRING_INDEX( SUBSTRING_INDEX( fullname,  ' ', 1 ) ,  ' ', -1 ) AS firstname,
SUBSTRING_INDEX( SUBSTRING_INDEX( fullname,  ' ', 2 ) ,  ' ', -1 ) AS lastname
FROM users;

Для обновления существующих значений для той же строки:

update users
set firstname = SUBSTRING_INDEX( SUBSTRING_INDEX(fullname,  ' ', 1 ) ,  ' ', -1 ),
   lastname = SUBSTRING_INDEX( SUBSTRING_INDEX(fullname,  ' ', 2 ) ,  ' ', -1 ) 

Чтобы обновить существующие значения, но другую строку:

update users users_a, users users_b
set users_b.firstname = SUBSTRING_INDEX( SUBSTRING_INDEX( users_a.fullname,  ' ', 1 ) ,  ' ', -1 ),
    users_b.lastname = SUBSTRING_INDEX( SUBSTRING_INDEX( users_a.fullname,  ' ', 2 ) ,  ' ', -1 ) 
where users_a.??? = users_b.??? /* join condition as appropriate */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...