gpt4 book ai didi

php - MySql 如果存在则更新如果不存在则插入

转载 作者:行者123 更新时间:2023-11-30 22:00:48 24 4
gpt4 key购买 nike

我正在尝试向表中插入新内容或更新同一查询中的前一个表。我可以使用一些 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 和语言相同,则应该更新,如果不是,则应添加一个新的。Unique 不会解决问题,因为我需要在表中使用相同的语言和 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)。这使用插入到语句中的值。我认为这比重复表达更清楚。

关于php - MySql 如果存在则更新如果不存在则插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43427687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com