簡體   English   中英

MySQL - 覆蓋現有行

[英]MySQL - Overwriting existing rows

我正在使用 ID 系統,如果 ID 相同,我會嘗試覆蓋整行。 我在以下帖子中使用了 eggyal 的建議: SQL - IF EXISTS UPDATE ELSE INSERT INTO

INSERT INTO Data_test (SN, Inspect_Date, Inspector_Name, Cable_Check) VALUES ('SN003400', CURRENT_TIMESTAMP, 'Jack', 1)
ON DUPLICATE KEY UPDATE
    SN = VALUES(SN), Inspect_Date = VALUES(Inspect_Date), Inspector_Name= VALUES(Inspector_Name), Cable_Check= VALUES(Cable_Check);

這正是我需要的,但我確實收到了一個錯誤,即 VALUES() function 將在未來的版本中刪除。

警告:“VALUES 函數”已棄用,將在未來版本中刪除。 請使用 and alias (INSERT INTO... VALUES(...) AS alias) 並將 ON DUPLICATE KEY UPDATE 子句中的 VALUES(col) 替換為 alias.col

我是 SQL 的新手,我並沒有真正理解這個別名的含義。 我的問題是我可以使用什么,以及什么是最佳實踐。

您需要向 VALUES 子句添加別名,然后使用該別名

INSERT INTO Data_test (SN, Inspect_Date, Inspector_Name, Cable_Check) VALUES ('SN003400', CURRENT_TIMESTAMP, 'Jack', 1)
ON DUPLICATE KEY UPDATE
    SN = VALUES(SN), Inspect_Date = VALUES(Inspect_Date), Inspector_Name= VALUES(Inspector_Name), Cable_Check= VALUES(Cable_Check);

INSERT INTO Data_test (SN, Inspect_Date, Inspector_Name, Cable_Check) VALUES ('SN003400', CURRENT_TIMESTAMP, 'Jack', 1) AS newalias
    ON DUPLICATE KEY UPDATE
        SN = newalias.sn, Inspect_Date = newalias.Inspect_Date, Inspector_Name= newalias.Inspector_Name, Cable_Check= newalias.Cable_Check;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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