2013-01-31 36 views
0

我已經創建了以下SQL代碼來遷移我們的數據庫。 UP查詢工作正常,但我無法弄清楚如何修復DOWN查詢。我只想插入所有在payment_gateway表中的數據,但也必須匹配正確的reseller_shop.id。數據遷移腳本INSERT INTO

// UP 
INSERT INTO payment_gateway (`type`, account, keyIn, keyOut, resellerShopId) 
SELECT 'paymentGatewayOgone', rs.ogoneAccount, rs.ogoneSignatureIn, rs.ogoneSignatureOut, rs.id 
FROM reseller_shop AS rs 
WHERE rs.ogoneAccount <> ''; 

// DOWN 
INSERT INTO reseller_shop (ogoneAccount, ogoneSignatureIn, ogoneSignatureOut) 
SELECT pg.account, pg.keyIn, pg.keyOut 
FROM payment_gateway AS pg 
WHERE pg.type = 'paymentGatewayOgone' 
AND reseller_shop.id = pg.resellerShopId 
+0

查詢有什麼問題? – Bulat

+0

基本上很奇怪你需要引用你插入的表。如果需要,您應該在'SELECT'語句和'INNER JOIN' payment_gateway和reseller_shop中使用該表。 – Bulat

回答

2

似乎我不得不使用UPDATE而不是INSERT INTO的。

UPDATE reseller_shop AS rs, payment_gateway AS pg 
SET rs.ogoneAccount = pg.account, rs.ogoneSignatureIn = pg.keyIn, rs.ogoneSignatureOut = pg.keyOut 
WHERE pg.type = 'paymentGatewayOgone' 
AND rs.id = pg.resellerShopId 
1
INSERT INTO reseller_shop (ogoneAccount, ogoneSignatureIn, ogoneSignatureOut) 
SELECT pg.account, pg.keyIn, pg.keyOut FROM payment_gateway AS pg 
WHERE pg.type = 'paymentGatewayOgone' AND pg.resellerShopId in 
(select reseller_shop.id from reseller_shop_id) 

希望這有助於

0

有些事情是這樣的:

INSERT INTO reseller_shop (ogoneAccount, ogoneSignatureIn, ogoneSignatureOut) 
SELECT pg.account, pg.keyIn, pg.keyOut 
FROM payment_gateway AS pg 
    INNER JOIN reseller_shop AS rs ON rs.id = pg.resellerShopId 
WHERE pg.type = 'paymentGatewayOgone' 

或:

INSERT INTO reseller_shop (ogoneAccount, ogoneSignatureIn, ogoneSignatureOut) 
SELECT pg.account, pg.keyIn, pg.keyOut 
FROM payment_gateway AS pg 
WHERE pg.type = 'paymentGatewayOgone' 
    AND EXISTS (SELECT * 
       FROM reseller_shop AS rs 
       WHERE rs.id = pg.resellerShopId)