331

SELECTステートメントを使用して挿入するクエリがあります。

INSERT INTO courses (name, location, gid) 
SELECT name, location, gid 
FROM courses 
WHERE cid = $cid

挿入に「名前、場所」のみを選択gidし、クエリで他の何かに設定することは可能ですか?

4

8 に答える 8

619

はい、もちろんですが、構文を確認してください。

INSERT INTO courses (name, location, gid)
SELECT name, location, 1
FROM   courses
WHERE  cid = 2

gidもちろん、1つだけでなく、その場所と同じタイプの定数を置くことができます。そして、私はちょうど価値を作り上げましたcid

于 2011-03-22T12:42:34.627 に答える
38

はい、そうです。あなたは書ける :

INSERT INTO courses (name, location, gid) 
SELECT name, location, 'whatever you want' 
FROM courses 
WHERE cid = $ci

または、select..の別の結合から値を取得できます。

于 2011-03-22T12:41:42.223 に答える
8

正しい構文:選択したスペルが間違っていた

INSERT INTO courses (name, location, gid)
SELECT name, location, 'whatever you want' 
FROM courses 
WHERE cid = $ci 
于 2011-03-22T12:44:04.843 に答える
6

確かに、あなたはギッドに何を使いたいですか?静的な値、PHP var、..。

1234の静的な値は次のようになります。

INSERT INTO courses (name, location, gid)
SELECT name, location, 1234
FROM courses
WHERE cid = $cid
于 2011-03-22T12:41:30.447 に答える
2

もちろんできます。

ただし、このINSERT INTO SELECTステートメントは1つのテーブルからデータをコピーして別のテーブルに挿入し、ソーステーブルとターゲットテーブルのデータ型が一致している必要があることに注意してください。指定されたテーブル列のデータ型が一致しない場合(つまり、に挿入しようとした場合、またはにVARCHAR挿入しようとした場合)、MySQLサーバーは。をスローします。INTTINYINTINTSQL 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())は、テーブルの同じテーブル列に異なる文字セットがある場合に非常に役立ちます(適切に処理されない場合、データが失われる可能性があります)。

于 2019-10-18T11:25:34.943 に答える
1

INSERTステートメントが間違っていると思います。正しい構文を参照してください:http://dev.mysql.com/doc/refman/5.1/en/insert.html

編集:アンドリューがすでに指摘したように...

于 2011-03-22T12:43:56.823 に答える
0

私たちは皆、これが機能することを知っています。

INSERT INTO `TableName`(`col-1`,`col-2`)
SELECT  `col-1`,`col-2` 

===========================
複数の「select」ステートメントの場合、以下の方法を使用できます。情報のためだけに。

INSERT INTO `TableName`(`col-1`,`col-2`)
 select 1,2  union all
 select 1,2   union all
 select 1,2 ;
于 2020-07-13T09:36:18.877 に答える
-2

クエリの正しい構文は次のとおりです。

INSERT INTO courses (name, location, gid) 
SELECT (name, location, gid) 
FROM courses 
WHERE cid = $cid
于 2015-10-14T22:26:36.363 に答える