回答:
はい、もちろんですが、構文を確認してください。
INSERT INTO courses (name, location, gid)
SELECT name, location, 1
FROM courses
WHERE cid = 2
gid
もちろん、1だけではなく、その場所と同じ型の定数を置くことができます。そして、私はそのcid
価値を作り上げました。
OUTPUT
句があり、挿入したものを別のテーブルにも挿入できます。MySQLに同等のものはないと思います。あなたは可能性がある一時テーブルを作成移入、その後、そのテーブルに選択し、courses
その後、あなたが必要な任意の他のために一時テーブルを使用し、そのテーブルから。
はい、そうです。あなたは書ける :
INSERT INTO courses (name, location, gid)
SELECT name, location, 'whatever you want'
FROM courses
WHERE cid = $ci
または、selectの別の結合から値を取得できます...
正しい構文:選択したスペルが間違っていた
INSERT INTO courses (name, location, gid)
SELECT name, location, 'whatever you want'
FROM courses
WHERE cid = $ci
私はあなたのINSERTステートメントが間違っていると思います、正しい構文を参照してください:http : //dev.mysql.com/doc/refman/5.1/en/insert.html
編集:アンドリューがすでに指摘したように...
もちろんできます。
ただし、注意すべき点がINSERT INTO SELECT
1つあります。このステートメントでは、あるテーブルからデータをコピーして別のテーブルに挿入し、さらにソーステーブルとターゲットテーブルのデータ型が一致する必要があります。与えられた表の列からのデータ型が一致しない場合(つまり挿入しようVARCHAR
にINT
、またはTINYINT
にINT
MySQLサーバがスローされます)SQL Error (1366)
。
ので注意してください。
コマンドの構文は次のとおりです。
INSERT INTO table2 (column1, column2, column3)
SELECT column1, column2, column3 FROM table1
WHERE condition;
補足:でキャストを使用してSELECT
、さまざまな列タイプの挿入の問題を回避する方法があります。次に例を示します。
SELECT CAST('qwerty' AS CHAR CHARACTER SET utf8) COLLATE utf8_bin;
この変換(のCAST()
同義語CONVERT()
)は、テーブルの同じテーブル列に異なる文字セットがある場合に非常に役立ちます(適切に処理されない場合、データが失われる可能性があります)。
クエリの正しい構文は次のとおりです。
INSERT INTO courses (name, location, gid)
SELECT (name, location, gid)
FROM courses
WHERE cid = $cid