4

JDBC 経由で MySQL の "INSERT IGNORE" ステートメントを実行すると、重複カウントを取得できますか?

たとえば、mysql コマンド ラインで INSERT IGNORE ステートメントを実行すると、重複があり、次のような結果が得られます。

クエリ OK、影響を受ける行は 0 (0.02 秒) レコード: 1 重複: 1 警告: 0

「Duplicates: 1」と表示されている箇所に注意してください。これは、無視された重複があったことを示しています。

JDBC経由でクエリを実行した場合、同じ情報を取得することはできますか?

ありがとう。

4

3 に答える 3

1

INSERT IGNORE を実行するときに、ROW_COUNT() および FOUND_ROWS() 関数を使用して、挿入された行と重複の数を判断できます。

例えば ​​:

SELECT ROW_COUNT(), FOUND_ROWS()
    INTO myRowCount, myFoundRows;
myInsertedRows = myRowCount;
myDuplicateRows =  myFoundRows - myInsertedRows;
COMMIT;
于 2014-06-25T23:49:40.910 に答える
1

挿入後に発行することでこれを取得できると思いますSHOW WARNINGS

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

于 2012-04-14T02:50:15.240 に答える
0

rows affectedJDBC 経由で値を取得できます。挿入した行数から差し引くだけです。

rows affectedクエリによって間接的に影響を受ける行も含まれることに注意してください。そのため、他の行に影響を与えるトリガーがある場合rows affectedは、それらの行も含めます。

参照: http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html#executeUpdate ()

于 2012-04-14T03:14:42.283 に答える