2016-03-16 75 views
1

我有兩個表users_newusers_old與一些行數。 我想通過使用insert select插入數據從users_oldusers_new結合INSERT SELECT和VARIABLES

users_old有一個字段name,其中包含名和姓。
users_new必須有兩個字段,名字(name)和姓氏(surname)。

我不知道如何結合他們。有什麼建議?

SET @str=""; 
SET @firstName=""; 
SET @lastName=""; 

INSERT INTO users_new (name, surname) 
VALUES(
    SELECT @firstName,@lastName; 
    @str=select name 
     FROM users_old 
SET @firstName = SUBSTRING_INDEX(@str, ' ', 1); 
SET @lastName=LTRIM(REPLACE(@str, @firstName, '')) 
); 

回答

1

如果分裂標準是空間,通過張貼,那麼你可以使用一個簡單的INSERT INTO SELECT聲明的SQL代碼所暗示的:

INSERT INTO users_new (name, surname) 
SELECT SUBSTRING_INDEX(name, ' ', 1), SUBSTRING_INDEX(name, ' ', -1) 
FROM users_old 

姓氏由第二呼叫選擇SUBSTRING_INDEX :由於-1參數,此人獲得name字段的第二部分

+0

謝謝你,它解決了我的問題。 – Dana

+0

只有所有的名字都由姓氏和名字組成,它纔會起作用。如果你只有一個單詞的名字,它會在兩列中重複出現,如果你在混音中有一箇中間名,則姓氏將會丟失。 – Derenir

+0

謝謝。我明白了) – Dana