回答:
はい、もちろんですが、構文を確認してください。
INSERT INTO courses (name, location, gid)
SELECT name, location, 1
FROM   courses
WHERE  cid = 2gidもちろん、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 SELECT1つあります。このステートメントでは、あるテーブルからデータをコピーして別のテーブルに挿入し、さらにソーステーブルとターゲットテーブルのデータ型が一致する必要があります。与えられた表の列からのデータ型が一致しない場合(つまり挿入しようVARCHARにINT、またはTINYINTにINTMySQLサーバがスローされます)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