私は2つのテーブルを持っています:
t1(mainid, parentid)
t2(mainid, parentid)
t1.mainid
の値をにコピーするにはどうすればよいt2.parentid
ですか?
私は使ってみました:
SELECT mainid INTO t2 FROM t1
しかし、それは機能しません。
私は2つのテーブルを持っています:
t1(mainid, parentid)
t2(mainid, parentid)
t1.mainid
の値をにコピーするにはどうすればよいt2.parentid
ですか?
私は使ってみました:
SELECT mainid INTO t2 FROM t1
しかし、それは機能しません。
INSERT ... SELECT構文を試してください:
INSERT INTO t2(parentid) SELECT mainid FROM t1
t2のmainidも自動インクリメントの場合
INSERT INTO t2(parentid) SELECT mainid FROM t1
INSERT INTO tbl_name [(col_name,...)] SELECT ....
INSERT INTO t2 SELECT 0,mainid FROM t1
次の解決策
INSERT INTO t2(parentid) SELECT mainid FROM t1
t2(mainid)にデフォルト値が設定されている限り、機能します。確認してください。
テーブルに挿入するときは、1つの列の値だけでなく、テーブルに行全体を挿入しているという事実を考慮する必要があります。一部の列にデフォルト値がある場合でも、行全体をテーブルに挿入することを検討すると便利です。
したがって、mainid列の値をt1からt2のparentid列にクロスするには、次のようにすることができます。
INSERT INTO T2 SELECT 0,mainid FROM T1
ただし、T1のすべてのmainid値について、0とmanid値を転送してt2行を構成します。t2に一意性制約がある場合、この方法で問題を解決することはできません。