Mysql 如果不存在则插入如果表为空则失败

Mysql 如果不存在则插入如果表为空则失败,mysql,Mysql,我使用以下命令来避免表中出现重复: INSERT INTO mytable (num,name) SELECT 2,'example' FROM mytable WHERE NOT EXISTS (SELECT * FROM mytable WHERE num=2 AND name='example') LIMIT 1; 它正在工作,但如果mytable为空,则不会工作 mytable还包含一个自动增量id 您是否推荐其他方法或解决方法?您可以执行以下操作 从tbl中选择*,其中______

我使用以下命令来避免表中出现重复:

INSERT INTO mytable (num,name)
SELECT 2,'example' FROM mytable WHERE NOT EXISTS
(SELECT * FROM mytable WHERE num=2 AND name='example') LIMIT 1;
它正在工作,但如果mytable为空,则不会工作

mytable还包含一个自动增量id

您是否推荐其他方法或解决方法?

您可以执行以下操作 从tbl中选择*,其中______

然后添加if语句,如果结果可用,则插入或保留

为什么不直接使用insert IGNORE呢。还有,为什么要从同一个表中复制数据?

在我的例子中,用DUAL替换mytable成功了。但我不知道为什么

INSERT INTO mytable (num,name)
SELECT 2,'example' FROM mytable WHERE NOT EXISTS
(SELECT * FROM mytable WHERE num=2 AND name='example') LIMIT 1;
替换为:

INSERT INTO mytable (num,name)
SELECT 2,'example' FROM DUAL WHERE NOT EXISTS
(SELECT * FROM mytable WHERE num=2 AND name='example') LIMIT 1;
感谢您的帮助。

您可以使用MySQL Unique创建Unique列

只需更新您的CREATETABLE查询,如下所示

CREATE TABLE mytable (
  id int(11) NOT NULL auto_increment,
  num int(11) NOT NULL,
  name varchar(100) NOT NULL,
  PRIMARY KEY (id),
  UNIQUE (num) # You can define Unique column like this
);
注意:保存到数据库时,不需要检查唯一值

并尝试使用普通SQL查询插入数据

INSERT INTO mytable (num,name) VALUES(2,'example')

这是一次性的,还是您的表要求num、name的组合始终是唯一的?如果是这样,您需要在这对列上创建一个唯一的索引。请尝试从dual中选择2,'example'。。。相反。您的意思是什么不工作?原因:从mytable中选择,当mytable为空时,将不返回任何记录。使用dual,您还可以忽略限制1,因为dual只有一条记录。
INSERT INTO mytable (num,name) VALUES(2,'example')