mysql - 如果表中不存在列值,则将行插入表中

标签 mysql sql

我有以下查询:

INSERT INTO LICENSE_TABLE
(code, license_type, distributor)
values ("uniquecode", "standard", "walmart")

只有当不存在已经具有 code="uniquecode"

的行时,我才想插入该行

我该怎么做?

我找到了一些涉及 INSERT IGNORE 的解决方案,一些关于 DUAL 的解决方案,还有一些,但我不明白哪个适用于我的情况。

如果重要的话,我正在使用 pymysql

最佳答案

最好的方法是使用 on duplicate key update:

首先,您需要一个唯一索引,以便数据库保持数据的完整性。

第二个:

INSERT INTO LICENSE_TABLE (code, license_type, distributor)
    VALUES ('uniquecode', 'standard', 'walmart')
    ON DUPLICATE KEY UPDATE code = VALUES(code);

这比带有 EXISTSWHERE 子查询要好,因为它是线程安全的。这意味着不同线程中的多个更新永远不会导致问题。

这比 INSERT IGNORE 更好,因为 INSERT IGNORE 会忽略其他错误。 ON DUPLICATE KEY UPDATE 完全符合您的要求。

关于mysql - 如果表中不存在列值,则将行插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52290872/

相关文章:

php - 获取拖放值以保存在mysql数据库中

mysql - MediaWiki Docker官方图像-MySQL拒绝连接

mysql - 使用 Rails 应用程序建立数据库索引

php - Android - 使用 php 将图像上传到服务器的最佳方法

Mysql JOIN(多个)表

java - 通过 Hibernate 从 SQL 数据库中获取随机对象

mysql - 无法获取所有结果以显示在 4 表查询中

SQL - 聚合函数不能在 postgresql 中嵌套错误

sql - 在 SQL 中为主键选择字符变化数据类型的优缺点是什么?

mysql - SQL根据两列查找记录