我尝试将数据填充到我的数据库中。但我根据时间不想要共和党人。我不关心共和党人,因为我不会丢失任何数据。
经过长时间的搜索,我终于发现,您无法将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:SQL语法中有错误;校验 手册...... ......附近使用选择1448982118099 第1行的EXISTS(SELECT * FROM gpsdata.data,其中time = 14')
在检查dublicates之前,代码运行正常。所以它应该是新的声明。
此致 埃里克
编辑:我不想将我的数据复制到另一个表中。
答案 0 :(得分:0)
?
不是SELECT ?
中的有效参数。你必须按字面命名一列。
答案 1 :(得分:-1)
要将 insert with parameters part与 condition 部分连接起来,您可以使用 select from dual 。 我在Oracle上尝试过以下声明。
preparedStatement = connect.prepareStatement("INSERT INTO gpsdata.data select 'default', ?, ? , ?, ?, ?, ?, ?, ? from dual
WHERE NOT EXISTS(SELECT * FROM gpsdata.data where time = ?)");
ps:请注意你使用时间变量两次。