我正在嘗試移動數據並使用觸發器將其轉換爲另一個表。 我已經表設置和這個開發代號:在表中只創建新行
DELIMITER//
CREATE TRIGGER move_data AFTER
INSERT ON schema.old_table
FOR EACH ROW
BEGIN
DECLARE num_id_before, num_id_after INT;
SET num_id_before = (select count(id) FROM schema.old_table);
SET num_id_after = (num_id_before - 7);
INSERT INTO schema.new_table (name, street_address,
street_address_line_2, city, state, zip, country, fr_dob)
SELECT MAX(CASE WHEN element_label = 0 THEN element_value end) AS name,
MAX(CASE WHEN element_label = 1 THEN element_value end) AS street_address,
MAX(CASE WHEN element_label = 2 THEN element_value end) AS street_address_line_2,
MAX(CASE WHEN element_label = 3 THEN element_value end) AS city,
MAX(CASE WHEN element_label = 4 THEN element_value end) AS state,
MAX(CASE WHEN element_label = 5 THEN element_value end) AS zip,
MAX(CASE WHEN element_label = 6 THEN element_value end) AS country,
MAX(CASE WHEN element_label = 7 THEN element_value end) AS dob
FROM schema.old_table
LIMIT num_id_after, num_id_before
GROUP BY group_id
END //
DELIMITER;
它目前作品,未經:
DECLARE num_id_before, num_id_after INT;
SET num_id_before = (select count(id) FROM schema.old_table);
SET num_id_after = (num_id_before - 7);
和:
LIMIT num_id_after, num_id_before
與這些代碼片段加入,我得到此錯誤:
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'num_id_after, num_id_before GROUP BY group_id END' at line 22
〜編輯:我知道這是基本上「一些不對的東西」的通用錯誤,但它可能有助於診斷,我是相當新的mysql
唯一的問題是,它會複製所有以前的數據它運行的時間而不是僅僅新添加的行。目前,舊錶格會設置數據,因爲每個值都是組中的單獨一行。我需要將它放在一個新表中,每個組在一行中。
任何人都可以幫忙嗎?隨意問更多的信息
查詢結束時應該使用限制 –
這不是「通用」。這精確地指出了錯誤發生的位置(在'num_id_after'單詞的左側或者之後)! – Strawberry
我得到這個,如果我這樣做:錯誤代碼:1064.你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第23行'num_id_after,num_id_before END'附近使用正確的語法。 –