1

別の列の新しい各行の一意の (自動インクリメントされた) ID を複製する必要がある状況があります。だから私は、昔ながらの方法でそれを行うのではなく、疑問に思っていました:

  1. 行を挿入
  2. insert_id を取得する
  3. insert_id で行を更新する

別の列の値として、新しい ID が設定されるのと同じ値を使用するように MySQL に指示できますか?

これに沿った何か:

INSERT INTO my_table(unique_column, id_duplicate) 
VALUES('value', GET_UNIQUE_ID_OF_THIS() )
4

1 に答える 1

0

単一のクエリで自動インクリメント列を使用して達成しようとしていることを達成する方法はありません。

反対方向から近づいてみてください。id自動インクリメント列がで、他の列が と呼ばれるとしましょうother_id。NULL を許可するように列を設定other_idし、最初の挿入でその値を NULL に設定するだけです。

次に、値を照会するときは、次のようにします。

SELECT id, IFNULL(other_id, id) AS other_id FROM mytable

最終的な結果は同じです。自動インクリメント値は 1 から始まるため、NULL に反対するものがある場合は、デフォルト値として 0 を使用することもできます。

于 2012-08-28T12:33:49.577 に答える