9

MySQL で可能な列の 1 つでの選択に基づいて次の挿入です

INSERT INTO student_fees(id, name, fees) 
VALUES(1, SELECT name from students where student_id = 1, 200$) 

はいの場合、例は本当に役に立ちます。

-ありがとう

4

3 に答える 3

11

INSERT...SELECTステートメントを試してください

INSERT INTO student_fees(id, name, fees) 
SELECT ... -- put here the SELECT STATEMENT with condition

IDauto incrementedの場合、 を指定する必要はありません。そうしない1と、エラーが発生します。

INSERT INTO student_fees(name, fees) 
SELECT `name`, '200$' 
FROM students         -- this will select all students on the table
                      -- and add $200 on thier fees.

もう 1 つのポイントは、studentのテーブルから 1 つの列のみを挿入する場合は、条件を指定する必要があるため、制約エラーが発生しないことです (列 ID が主キーであると仮定します) 。

INSERT INTO student_fees(name, fees) 
SELECT `name`, '200$' 
FROM   students
WHERE  columnName = 'blahBlah'

更新 1

あなたのコメントを見て、あなたはこのクエリを持っています

INSERT INTO coupon_allotment (page_id, offer_id, coupon_code, user_id) 
SELECT page_id, 4, 'ABC'        -- number of columns mismatch, right?
FROM pages_discounts_association 
WHERE discount_id = 4

上記の列を削除するか、列の数を一致させるために select ステートメントにを追加する必要があります。user_idID

于 2012-08-10T09:10:04.003 に答える
3

次のように、通常のINSERT INTO ... SELECT構文を使用して、他のフィールドを定数として選択するだけです。

INSERT INTO student_fees(id, name, fees) 
SELECT 1, `name`, '200$' FROM students
于 2012-08-10T09:09:39.327 に答える
2

これを試して:

INSERT INTO student_fees(id, name, fees) 
Select 1, name,'200$' from students 
于 2012-08-10T09:09:41.433 に答える