mysql java preparedstatement insert(如果不存在)
我试图把数据填入我的数据库。但我不想要基于时间的怀疑。我不在乎那些可疑的人,因为我不会丢失任何数据。
经过长时间的搜索,我终于发现,不能将WHERE NOT EXIST
与INSERT INTO
一起使用
但现在我有了下一个问题。我试过这两种方法,但都不管用
/*
preparedStatement = connect.prepareStatement("IF NOT EXISTS(SELECT * FROM gpsdata.data where time=?) "
+ "Begin "
+ "INSERT INTO gpsdata.data VALUES (default, ?, ? , ?, ?, ?, ?, ?, ?) "+
"END");
*/
preparedStatement = connect.prepareStatement("INSERT INTO gpsdata.data VALUES (default, ?, ? , ?, ?, ?, ?, ?, ?) "
+ "SELECT ? FROM gpsdata.data WHERE NOT EXISTS(SELECT * FROM gpsdata.data where time = ?)");
两者都给了我一些mysql语法错误。我搞不懂怎么了。我是mysql新手。最后一次尝试给了我至少一个不同的错误:
MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual... ... to use near 'SELECT 1448982118099 WHERE NOT EXISTS(SELECT * FROM gpsdata.data where time =14') at line 1
在检查dublicates之前,代码运行良好。所以这应该是新的声明
问候, 埃里克
编辑:我不想将数据复制到其他表中
# 1 楼答案
?
不是SELECT ?
中的有效参数。你必须按字面意思命名一列# 2 楼答案
为了连接插入参数零件和条件零件,可以使用从双中选择。 我曾与甲骨文公司尝试过下面的说法
ps:请注意,您使用时间变量两次