2012-04-13 80 views
2

通過JDBC執行MySQL「INSERT IGNORE」語句時可能獲得重複計數嗎?通過JDBC執行INSERT IGNORE時獲取重複計數

例如,當我執行INSERT IGNORE MySQL命令行上的語句,並且有重複我得到類似

查詢OK,0行的影響(0.02秒) 記錄:1重複:1個警告:0

注意它說「重複:1」,表示有重複被忽略。

通過JDBC執行查詢時可以獲得相同的信息嗎?

謝謝。

+0

我不認爲重複數據被存儲在查詢。最接近的是在'INSERT'之前用'WHERE unique values'運行一個'SELECT',得到行數並且有你的重複項。 – 2012-04-13 13:40:48

+0

你有沒有找到如何檢索重複的價值? – amgohan 2015-08-12 02:34:53

回答

0

我相信你可以通過在插入後發佈SHOW WARNINGS來檢索。

http://dev.mysql.com/doc/refman/5.0/en/show-warnings.html

+0

INSERT IGNORE在嘗試插入重複值時不會產生警告。正如我以前寫的 - 如果我從SQL控制檯運行它 - 它產生這樣的事情: 查詢OK,0行受影響(0.02秒)記錄:1重複:1警告:0 所以「警告:0」沒有警告。 – 2012-04-18 07:27:53

1

可以使用ROW_COUNT()和FOUND_ROWS()函數來確定插入的行和副本的數量做INSERT IGNORE的。

例如:

SELECT ROW_COUNT(), FOUND_ROWS() 
    INTO myRowCount, myFoundRows; 
myInsertedRows = myRowCount; 
myDuplicateRows = myFoundRows - myInsertedRows; 
COMMIT; 
+1

在你的例子中,「INSERT IGNORE」在哪裏? – 2015-11-11 14:50:26