3

この質問が SQL、MySQL、ストアド ルーチン、さらには JDBC のドメインに適切に含まれているかどうかはわかりません。基本的に、次のようなSQL関数が必要です。

INSERT IGNORE (id, data) INTO table
SELECT id FROM table WHERE `data` = data

これは、生の SQL またはストアド ルーチンを介して Java から開始する必要があります。insert ignoreが成功した場合、挿入したばかりのものを取得するために SQL クエリをすぐに実行する必要がないため、これは非常に貧弱に見えます。自動生成されることに注意してくださいid。SQLクエリの数で効率的で読みやすいなど、これを行う最良の方法は? INSERT IGNORE がどれほど効率的であるか、私にはまったくわかりません。

4

1 に答える 1

0

LAST_INSERT_ID()少しのロジックで を使用できます。

INSERT IGNORE ... INTO Table
SELECT IF(LAST_INSERT_ID() <> 0, LAST_INSERT_ID(), (SELECT id FROM table WHERE `data` = data))

(未テスト)

于 2012-07-18T19:09:21.507 に答える