2012-04-19 4 views
6
INSERT INTO campaign_ledger (`campaign_id`, `description`, amount, balance, timestamp) 
VALUES (SELECT id as campaign_id, 'Ported from campaigns' as description, budget_remaining as amount, budget_remaining as balance, NOW() as timestamp FROM campaigns) 

FROM MySQLのが、私はというエラーを取得:INSERT INTO私の構文です別のテーブル

あなたのSQL構文でエラーが発生しています。私は間違って何をやっているライン2

で が近く を使用する権利構文についてはMySQLサーバのバージョンに対応していること取扱説明書を確認してください「CAMPAIGN_IDとしてIDを選択し、 『キャンペーンから移植された』 説明など、budget_remaini」 ?

+1

「VALUES」は使用しないでください。 –

答えて

11

あなたがテーブルから選択されているので、あなたはINSERT INTO SELECT FROMクエリを使用したいと思うでしょう:あなたが特定の値を使用して、テーブルから選択されていないとき

INSERT INTO campaign_ledger 
(
    `campaign_id` 
    , `description` 
    , amount 
    , balance 
    , timestamp 
) 
SELECT 
    id as campaign_id 
    , 'Ported from campaigns' as description 
    , budget_remaining as amount 
    , budget_remaining as balance 
    , NOW() as timestamp 
FROM campaigns 

のみINSERT INTO VALUESを使用します。あなたがINSERT INTO VALUESを使用したい場合は、クエリは次のようになります:

INSERT INTO campaign_ledger 
(
    `campaign_id` 
    , `description` 
    , amount 
    , balance 
    , timestamp 
) 
VALUES 
(
    1 
    , 'test' 
    , 100.00 
    , 1000.00 
    , NOW() 
) 
2
INSERT INTO campaign_ledger (`campaign_id`, `description`, amount, balance, timestamp) 
SELECT id as campaign_id, 'Ported from campaigns' as description, 
budget_remaining as amount,budget_remaining as balance, 
NOW() as timestamp FROM campaigns; 
2

クエリのVALUES部分は必要ありません。例:

INSERT INTO campaign_ledger (`campaign_id`, `description`, amount, balance, timestamp) 
SELECT id as campaign_id, 'Ported from campaigns' as description, 
     budget_remaining as amount, budget_remaining as balance, 
     NOW() as timestamp 
FROM campaigns; 
関連する問題