通過JDBC執行MySQL「INSERT IGNORE」語句時可能獲得重複計數嗎?通過JDBC執行INSERT IGNORE時獲取重複計數
例如,當我執行INSERT IGNORE MySQL命令行上的語句,並且有重複我得到類似
查詢OK,0行的影響(0.02秒) 記錄:1重複:1個警告:0
注意它說「重複:1」,表示有重複被忽略。
通過JDBC執行查詢時可以獲得相同的信息嗎?
謝謝。
通過JDBC執行MySQL「INSERT IGNORE」語句時可能獲得重複計數嗎?通過JDBC執行INSERT IGNORE時獲取重複計數
例如,當我執行INSERT IGNORE MySQL命令行上的語句,並且有重複我得到類似
查詢OK,0行的影響(0.02秒) 記錄:1重複:1個警告:0
注意它說「重複:1」,表示有重複被忽略。
通過JDBC執行查詢時可以獲得相同的信息嗎?
謝謝。
我相信你可以通過在插入後發佈SHOW WARNINGS
來檢索。
INSERT IGNORE在嘗試插入重複值時不會產生警告。正如我以前寫的 - 如果我從SQL控制檯運行它 - 它產生這樣的事情: 查詢OK,0行受影響(0.02秒)記錄:1重複:1警告:0 所以「警告:0」沒有警告。 – 2012-04-18 07:27:53
你可以通過JDBC的rows affected
值。只需從插入的行數中減去它即可。
請注意,rows affected
還包含間接受查詢影響的行。所以,如果有觸發器會影響其他行,那麼rows affected
也會包含這些行。
見:http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html#executeUpdate()
可以使用ROW_COUNT()和FOUND_ROWS()函數來確定插入的行和副本的數量做INSERT IGNORE的。
例如:
SELECT ROW_COUNT(), FOUND_ROWS()
INTO myRowCount, myFoundRows;
myInsertedRows = myRowCount;
myDuplicateRows = myFoundRows - myInsertedRows;
COMMIT;
在你的例子中,「INSERT IGNORE」在哪裏? – 2015-11-11 14:50:26
我不認爲重複數據被存儲在查詢。最接近的是在'INSERT'之前用'WHERE unique values'運行一個'SELECT',得到行數並且有你的重複項。 – 2012-04-13 13:40:48
你有沒有找到如何檢索重複的價值? – amgohan 2015-08-12 02:34:53