[英]mysql query - how do I need to split the table data
提前致謝。
我有一張桌子,叫做person_details。 這是person_details表的示例數據。
ID Name_and_Dept Location ------------------------------------- 1 John Doe - Finance New York 2 Emmy Joe - IT Boston 3 Stella Job - Admin Chicago 4 Steve Doe - Finance Los Angeles 5 Frank Chad - Sales Boston 6 Rich Moss - Admin New York
我有兩個新表,分別稱為person_dept和person_location。 我需要通過以下方式在person_dept和person_location表中使用person_details表數據。
person_dept表
P_ID Name Dept --------------------------- 1 John Doe Finance 2 Emmy Joe IT 3 Stella Job Admin 4 Steve Doe Finance 5 Frank Chad Sales 6 Rich Moss Admin
人員位置表
L_ID Name Location --------------------------- 1 John Doe New York 2 Emmy Joe Boston 3 Stella Job Chicago 4 Steve Doe Los Angeles 5 Frank Chad Boston 6 Rich Moss New York
不知道我是否可以使用查詢或存儲的proc或觸發器來實現此目的。 如果有人可以幫助我,我非常感謝。 再次感謝。
您正在尋找SUBSTRING_INDEX函數。 如果您希望按照您的問題來構造表,則可以使用像這樣的兩個INSERT查詢來代替觸發器:
INSERT INTO person_dept
SELECT
ID,
SUBSTRING_INDEX(Name_and_Dept, ' - ', 1),
SUBSTRING_INDEX(Name_and_Dept, ' - ', -1)
FROM person_details;
INSERT INTO person_location
SELECT
ID,
SUBSTRING_INDEX(Name_and_Dept, ' - ', 1),
Location
FROM person_details;
請看這里的小提琴。 如果您需要將記錄自動添加到person_dept和person_location表中,則需要一個觸發器,並且可以從以下內容開始:
DELIMITER |
CREATE TRIGGER populate_tables AFTER
INSERT ON person_details
BEGIN
INSERT INTO person_dept VALUES
(new.ID,
SUBSTRING_INDEX(new.Name_and_Dept, ' - ', 1),
SUBSTRING_INDEX(new.Name_and_Dept, ' - ', -1)
);
INSERT INTO person_location
VALUES
(new.ID,
SUBSTRING_INDEX(new.Name_and_Dept, ' - ', 1),
new.Location
);
END;
|
DELIMITER ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.