我有一个表设置,其中包含一个名为test
的UNIQUE列。我希望只有在test
表中没有行时才会在列test
中插入一行。我知道我可以执行INSERT
查询,如果它已经存在会抛出一个错误(并且不会真正造成任何伤害AFAIK),但有没有办法只使用MySQL正确地执行此操作?我很确定它可以通过功能来完成,但我以前从未使用过这些功能,而且我认为这是一种更简单的方法。
感谢您的帮助,我很感激!
答案 0 :(得分:4)
听起来像是INSERT IGNORE的工作:
如果使用IGNORE关键字,则会出错 执行INSERT时发生的情况 声明被视为警告 代替。例如,没有IGNORE, 一个复制现有的行 UNIQUE索引或PRIMARY KEY值 该表导致重复键错误 声明中止。同 IGNORE,行仍未插入, 但没有发出错误。
答案 1 :(得分:2)
这样的事情应该有效
INSERT INTO TABLE(column1,column2)
SELECT value1, value2
WHERE 1 NOT IN (SELECT 1 FROM TABLE WHERE test='test')
答案 2 :(得分:1)
您可以使用IGNORE关键字,如下所示:
INSERT IGNORE INTO table_name (test) VALUES('my_value');
如果使用IGNORE关键字,则执行INSERT语句时发生的错误将被视为警告。例如,如果没有IGNORE,则复制表中现有UNIQUE索引或PRIMARY KEY值的行会导致重复键错误,并且语句将中止。使用IGNORE时,仍未插入行,但未发出错误。
如果您想更新现有行而不是完全忽略重复更新,请查看ON DUPLICATE KEY UPDATE syntax。
答案 3 :(得分:0)
INSERT IGNORE(v,b,g)价值观(1.2.3) 如果你按键(主要或唯一),你将无所事事,但你应该知道你的钥匙。 或者正如约翰所说的,带有预先包含的数据