0

良い一日

NEW_TABLE別のテーブル列 の一部からテーブル を作成しましたOLD_TABLE

IDタイプ doubleの新しい列を追加しました

ID 列の値を一意の値で埋めて、それをNEW_TABLEキーにしたいと考えています。

クエリまたは設定コマンドを使用して MySQL でこれを行う方法はありますか?

私はこのようなことを試しました:

Insert into NEW_TABLE
(select  generateId() , col1, col2 
 from ORIGINAL_TABLE)
4

4 に答える 4

2

通常、フィールドを定義するときに、フィールドを自動インクリメント フィールドに設定します。後でこれを行うには、次を使用できます。

ALTER TABLE NEW_TABLE MODIFY ID int(10) unsigned NOT NULL auto_increment;

その後、新しいレコードを挿入し、割り当てられた ID を自動的に取得するには、挿入からフィールドを省略します。

于 2012-07-23T08:38:47.927 に答える
1

自動インクリメントと整数フィールドを使用する必要があります (二重キーが必要な理由はありますか?):

CREATE TABLE NEW_TABLE (
     id INT NOT NULL AUTO_INCREMENT,
     col1 CHAR(30) NOT NULL,
     col2 CHAR(30) NOT NULL,
     PRIMARY KEY (id)
) 
于 2012-07-23T08:38:07.797 に答える
1

これを試して:

Insert into NEW_TABLE
(select   @row := @row + 1 as generateId, col1, col2 
 from ORIGINAL_TABLE, (SELECT @row := 0)row)
于 2012-07-23T08:37:11.937 に答える
1

DOUBLE整数データ型ではなく、なぜ選択したのですか?

ALTER TABLE NEW_TABLE
  MODIFY ID INT UNSIGNED NOT NULL AUTO_INCREMENT ;

ALTER TABLE NEW_TABLE
  ADD CONSTRAINT new_table_pk
    PRIMARY KEY (ID) ;

その後:

INSERT INTO NEW_TABLE 
  (col1, col2)
SELECT col1, col2 
FROM ORIGINAL_TABLE ;
于 2012-07-23T08:42:45.973 に答える