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

时间:2016-10-11 13:32:10

标签: 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还包含AUTO_INCREMENT个ID。

CREATE TABLE mytable (
 id int(11) NOT NULL auto_increment,
 num int(11) NOT NULL,
 name varchar(100) NOT NULL,
 PRIMARY KEY (id)
);

您是否建议使用其他方法或解决方法?

4 个答案:

答案 0 :(得分:0)

在我的情况下,用val conf = new SparkConf().set("spark.storage.memoryFraction", "0.1") val sc = new SparkContext(conf) val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc) 替换mytable就可以了。 (但我不明白为什么)

DUAL

替换为:

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

感谢您的帮助。

答案 1 :(得分:0)

您可以使用MySQL UNIQUE

创建唯一

只需更新 CREATE TABLE 查询,如下所示

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')

答案 2 :(得分:-1)

你可以做点什么 从tbl中选择*,其中_____ = ______

然后添加if语句,如果结果可用,则插入或以其他方式离开

答案 3 :(得分:-1)

为什么不简单地使用 INSERT IGNORE 。另外,为什么要复制同一个表中的数据呢?