У меня есть запрос 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, который не работает:
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);
У меня есть ошибка в этой строке:
'vc
WHERE vc.code IN
(SELECT t1.oldacctnbr FROM
(SELECT a.oldacctn'
Я не вижу синтаксическая ошибка здесь. Где я ошибаюсь? И будет ли мой 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`);
Правильно ли запрос?
все тоже, что ошибки вы получаете ?? –
Точно: 'SQLSTATE [42000]: Ошибка синтаксиса или нарушение доступа: 1064 У вас есть ошибка i n ваш синтаксис SQL; проверьте руководство, которое соответствует вашему MySQL серверу v ersion на право синтаксиса использовать вблизи 'VC ГДЕ vc.code В (SELECT t1.oldacctnbr FROM (ВЫБРАТЬ a.oldacctn' в строке 1' – RexHunt