2015-01-21 4 views
0

Я наклоняю достаточно выяснить, правильный способ сделать следующее:UPDATE 2 колонки во всех строках, используя значения() массив

1.) У меня есть столбец FULLNAME 2.) Мне нужно разделить этот столбец FULLNAME в первую & Фамилии куски 3.) Мне нужно, чтобы вставить «разбить» данные в соответствующие столбцы (которые в настоящее время пусты и в той же таблице)

Я не мог понять, как это сделать в одном запросе, поэтому я разбил его на шаги:

1.) получил мои данные разбивки (первые/последние строки)

SELECT fullname, SUBSTRING_INDEX(fullname,' ',1) AS fname, SUBSTRING_INDEX(SUBSTRING_INDEX(fullname,'.',2),' ',-1) AS lname FROM tablename; 

который дал мой Fname & LName подстроки ..

я ошибочно попытался это:

INSERT INTO paypalRegistration (firstname, lastname) VALUES 
("xxxx", "xxx"), 
("yyy", "yyy"), 
("zzz", "zzz"),...etc.. 

который просто вставить вещи в новые строки .. (и вратаря обновить существующие строки [с пустыми столбцами] уже в таблице)

Итак, я тогда пробовал:

UPDATE paypalRegistration SET(firstname, lastname) VALUES ("xxxx", "xxx"), 
("yyy", "yyy"), ("zzz", "zzz"),...etc.. 

но получена ошибка ..

У вас возникла ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с именем (имя, фамилия) VALUES («xxxx», «xxx») .....

Итак, на данный момент мой вопрос: два раза.

1.) Как я могу сделать это в 1 запросе?

2.) В момент, когда я нахожусь, правильный способ обновить столбцы 2+ с уникальными значениями, как у меня выше?

Update:

Это то, что работает для меня в конце концов:

UPDATE myTable SET firstname=SUBSTRING_INDEX(fullname,' ',1), lastname=SUBSTRING_INDEX(SUBSTRING_INDEX(fullname,'.',2),' ',-1); 
+0

Примите к сведению ответ, если он правильный. или дать некоторые комментарии, по крайней мере, если это не тот ответ, который вы искали. – exodream

ответ

1

Произнесите имя таблицы paypalRegistration Эта таблица paypalRegistration имеет следующие столбцы:

  1. ID INT ПЕРВИЧНЫЙ КЛЮЧ
  2. FULLNAME VARCHAR
  3. ПгвЬЫате VARCHAR
  4. LastName VARCHAR

Я ожидаю, чтобы иметь столбец ID уже в таблице paypalRegistration, как описано выше. Теперь, вы можете сделать это SQL:

UPDATE paypalRegistration x 
INNER JOIN (
    SELECT 
    id, 
    SUBSTRING_INDEX(fullName,' ',1) AS fname, 
    SUBSTRING_INDEX(SUBSTRING_INDEX(fullName,'.',2),' ',-1) AS lname 
    FROM paypalRegistration 
) y ON y.id=x.id 
SET x.firstName = y.fname, x.lastName = y.lname; 
+1

Извините за поздний ответ, просто вернувшись к работе. На самом деле я разработал простой запрос на один лайнер, который выполняет как разделение, так и вставку .. (устанавливается) ... выглядит очень похоже на то, что вы также разместили: 'UPDATE myTable SET firstname = SUBSTRING_INDEX (полное имя, ', 1), lastname = SUBSTRING_INDEX (SUBSTRING_INDEX (полное имя,'. ', 2),' ', -1); ' Я приму свой ответ, хотя он был единственным. :) – whispers

Смежные вопросы