我有一個適用於Oracle數據庫的Oracle查詢。但是當我試圖將它移動到MySQL時,我有語法錯誤,並且我無法理解錯誤的位置。將Oracle查詢更改爲MySQL - 語法錯誤
Oracle查詢:
DELETE FROM tec_valid_codes
WHERE code IN
(SELECT a.oldacctnbr
FROM tec_onoff_file a,
tec_onoff_file b,
tec_valid_codes c
WHERE a.curracctnbr = b.curracctnbr
AND a.oldacctnbr <> b.oldacctnbr
AND a.transtype = 'COMB'
AND b.transtype = 'COMB'
AND a.oldacctnbr = c.code
MINUS
SELECT MAX (c.oldacctnbr)
FROM tec_valid_codes tvc,
(SELECT a.oldacctnbr, a.curracctnbr
FROM tec_onoff_file a, tec_onoff_file b
WHERE a.curracctnbr = b.curracctnbr
AND a.oldacctnbr <> b.oldacctnbr
AND a.transtype = 'COMB'
AND b.transtype = 'COMB') c
WHERE tvc.code = c.oldacctnbr
GROUP BY curracctnbr);
我的MySQL查詢,不工作:
'vc
WHERE vc.code IN
(SELECT t1.oldacctnbr FROM
(SELECT a.oldacctn'
我不明白:
DELETE FROM tec_valid_codes vc
WHERE vc.code IN
(SELECT t1.oldacctnbr FROM
(SELECT a.oldacctnbr
FROM tec_onoff_file a,
tec_onoff_file b,
tec_valid_codes c
WHERE a.curracctnbr = b.curracctnbr
AND a.oldacctnbr <> b.oldacctnbr
AND a.transtype = 'COMB'
AND b.transtype = 'COMB'
AND a.oldacctnbr = c.code) as `t1`
WHERE t1.oldacctnbr NOT IN
(SELECT MAX(c.oldacctnbr)
FROM tec_valid_codes tvc,
(SELECT a.oldacctnbr, a.curracctnbr
FROM tec_onoff_file a, tec_onoff_file b
WHERE a.curracctnbr = b.curracctnbr
AND a.oldacctnbr <> b.oldacctnbr
AND a.transtype = 'COMB'
AND b.transtype = 'COMB') as `c`
WHERE tvc.code = c.oldacctnbr)
GROUP BY vc.curracctnbr);
我在這行有錯誤語法錯誤在這裏。我錯在哪裏?我的MySQL查詢能正常工作嗎?
編輯:我的解決方案:
DELETE FROM tec_valid_codes
WHERE code IN
(SELECT t1.oldacctnbr FROM
(SELECT a.oldacctnbr
FROM tec_onoff_file a,
tec_onoff_file b,
tec_valid_codes c
WHERE a.curracctnbr = b.curracctnbr
AND a.oldacctnbr <> b.oldacctnbr
AND a.transtype = 'COMB'
AND b.transtype = 'COMB'
AND a.oldacctnbr = c.code) as `t1`)
AND code NOT IN
(SELECT t2.oldcode FROM
(SELECT MAX(c.oldacctnbr) as oldcode
FROM tec_valid_codes tvc,
(SELECT a.oldacctnbr, a.curracctnbr
FROM tec_onoff_file a, tec_onoff_file b
WHERE a.curracctnbr = b.curracctnbr
AND a.oldacctnbr <> b.oldacctnbr
AND a.transtype = 'COMB'
AND b.transtype = 'COMB') as `c`
WHERE tvc.code = c.oldacctnbr
GROUP BY curracctnbr) as `t2`);
它是正確的查詢?
Excatly什麼樣的錯誤你好嗎? – 2014-11-05 14:40:31
正確: 'SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法中有錯誤i ;檢查對應於你的MySQL v服務器 版爲手動進行正確的語法使用近 'VC WHERE vc.code IN (SELECT t1.oldacctnbr FROM (選擇a.oldacctn' 在行1' – RexHunt 2014-11-05 14:43:21