我使用以下命令来避免表中的重复:
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)
);
您是否建议使用其他方法或解决方法?
答案 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 。另外,为什么要复制同一个表中的数据呢?