首页 > 解决方案 > 如果所有值都不存在于一行中,则插入记录

问题描述

我有三列:a,b,c。

如果 a、b、c 不存在于一行中,我想插入一个新行。

使用 Python 来做到这一点。

INSERT INTO mytable(column_a, column_b, column_c) 
VALUES(value_a, value_b, value_c) 
WHERE value_a, value_b, value_c are all unique in existing rows. 

标签: pythonmysqlsql

解决方案


解决此问题的一种方法是在三列上创建唯一索引。如果您尝试插入重复的行,数据库将拒绝插入。无需特殊查询。这应该适用于任何关系数据库,而不仅仅是 MySQL。

用这个创建唯一索引:

CREATE UNIQUE INDEX a_b_c ON mytable (column_a, column_b, column_c)

像这样插入:

INSERT INTO mytable(column_a, column_b, column_c) VALUES (value_a, value_b, value_c)

如果已经存在具有相同值的行column_acolumn_bcolumn_c数据库将拒绝插入,并且您将在 Python 中看到异常。


推荐阅读