簡體   English   中英

MySQL查詢-我需要如何拆分表數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM