我嘗試填充數據到我的數據庫。但我不希望基於時間的出版物。我不在乎公開出版物,因爲我不會丟失任何數據。 經過漫長的搜索,我終於找到了,你不能使用WHERE NOT EXIST
與INSERT INTO
。mysql java preparedstatement插入如果不存在
但現在我得到了下一個問題。我嘗試了這兩種方法,但沒有一種可行。
/*
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之前,代碼運行良好。所以它應該是新的說法。
問候, 埃裏克
編輯:我不希望我的數據複製到另一臺。
你想將數據移動到其他表嗎? – mokarakaya
綁定變量用於在SQL和客戶端代碼(在您的情況下是Java)之間傳輸數據,而不用於在查詢中傳輸數據。 'INSERT ... SELECT'用於將記錄從一個表複製到另一個表。我認爲這些都不是你想要做的。將「時間」列作爲唯一索引或唯一索引的一部分是否合理? –
@mokarakaya不,我不想那樣做。我只想將新數據插入到我的表格中。但我不想用這些插入創建dublicates – Eric3235963