2012-04-19 20 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) 

to moja składnia, ale pojawia się błąd mówiąc:wstawić do MySQL z innej tabeli

masz błąd w składni SQL; sprawdzić podręcznika, który odpowiada twojej wersji serwera MySQL dla prawego składnię używać pobliżu „SELECT id jako CAMPAIGN_ID,«przeniesiony z kampanii»jako opis, budget_remaini” at line 2

Co robię źle ?

+1

Nie używaj "WARTOŚCI". –

Odpowiedz

11

Ponieważ jesteś wybierając z tabeli następnie będziemy chcieli użyć INSERT INTO SELECT FROM zapytanie:

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 

używać tylko INSERT INTO VALUES gdy używasz konkretnych wartości, a nie wybierając z tabeli. Jeśli chcesz użyć INSERT INTO VALUES następnie zapytanie byłoby tak:

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 część zapytania nie jest konieczne. Na przykład:

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; 
Powiązane problemy