1

私は仕事でMySQLを使用していますが、より高度なクエリにはまだ少し慣れていないので、かなり短縮できると思う(または期待する)長いクエリを書くことがよくあります。

最近、別のテーブルのエントリごとに、テーブルにX個の新しいエントリを作成する必要がある状況に遭遇しました。また、2番目のテーブルの各行から、最初のテーブルに挿入する各行に値をコピーする必要があります。

明確にするために、これが私がやろうとしていることの擬似コードです:

For each row in APPS
   create new row in TOKENS
   set (CURRENT)TOKENS.APP_ID = (CURRENT)APPS.APP_ID

「これは不可能です」と要約しても、どんな助けでもありがたいです。

注意として、テーブルはこの1つのフィールドのみを共有し、他のフィールドを静的にまたは他のメソッドを介して設定するため、単にコピーすることは実際にはオプションではありません。

4

1 に答える 1

3

ループは必要ありません。単一のINSERTコマンドを使用して、すべての行を一度に挿入できます。

INSERT INTO TOKENS (APP_ID)
SELECT APP_ID 
FROM APPS;

その行に他の値を設定する場合は、INSERTリストとSELECT句を変更するだけです。例えば:

INSERT INTO TOKENS (APP_ID, static_value, calculated_value)
SELECT APP_ID, 'something', 'calculated-' + APP_ID
FROM APPS
于 2012-12-04T20:26:30.030 に答える