簡體   English   中英

MySql Update if if exists如果不存在則插入

[英]MySql Update if exists insert if not

我試圖在表中插入新的或在同一個查詢中更新前一個。我可以用一些PHP代碼來解決它,但我的目標是在sql中完成所有操作。

問題

我的應用程序有不同語言的名稱,我可以添加新語言。當我添加新語言時,我的產品的翻譯會提高。 我的目標是發送腳本信息,如果兩列相同,則應更新數據,但如果不是,則應更新。

以下是我的一些疑問:

"INSERT INTO product_name(link,product_id,language)
VALUES(:link,:product_id,:language) ON DUPLICATE KEY UPDATE
link=:link,product_id=:product_id,language=:language"

上面的查詢解決了問題的一部分,但是當我想更改鏈接時,它會添加新數據。我的目標是更改鏈接,如果該行中的product_id和語言相同,則應該更新,如果不是因為我需要在表格中使用相同的語言和id,所以不應該添加新的。

我認為你只需要(product_id, language)唯一約束 - 並且在所有三列上都沒有唯一約束或主鍵。

CREATE UNIQUE INDEX unq_productname_product_language ON product_name(product_id, language);

這要求這值是唯一的,而不是每個值都是唯一的。

那么這應該做你想要的:

INSERT INTO product_name(link, product_id, language)
    VALUES (:link, :product_id, :language)
    ON DUPLICATE KEY UPDATE link = VALUES(link);

請注意,此版本使用VALUES(link) 這使用在語句中插入的值。 我認為這比重復表達更清楚。

暫無
暫無

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

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