2015-01-23 6 views
1

Я пытаюсь удалить записи, которые существуют в главном файле, где номер учетной записи, состоящий из трех полей mn_no, sb_no и dp_no, не входит в таблицы транзакций. Поскольку номер учетной записи может быть в одной или нескольких таблицах транзакций, мне нужно проверить его присутствие на всех. Когда я запускаю следующий запрос, MS-SQL возвращает неправильное синтаксическую ошибку вблизи в строке 1.Удалить, если не существует

DELETE 
FROM SYACTFIL_SQL a 
WHERE NOT EXISTS (
     SELECT b.mn_no 
      ,b.sb_no 
      ,b.dp_no 
     FROM gltrxhst_sql b 
     WHERE a.mn_no = b.mn_no 
      AND a.sb_no = b.sb_no 
      AND a.dp_no = b.dp_no 
     ) 
    AND NOT EXISTS (
     SELECT b.mn_no 
      ,b.sb_no 
      ,b.dp_no 
     FROM gltrxfil_sql b 
     WHERE a.mn_no = b.mn_no 
      AND a.sb_no = b.sb_no 
      AND a.dp_no = b.dp_no 
     ) 
    AND a.mn_no <> '00000000' 

ответ

5

Вы неправильный синтаксис здесь. Выполните следующие действия:

DELETE a 
FROM SYACTFIL_SQL a 
WHERE NOT EXISTS (SELECT b.mn_no , 
          b.sb_no , 
          b.dp_no 
        FROM gltrxhst_sql b 
        WHERE a.mn_no = b.mn_no 
          AND a.sb_no = b.sb_no 
          AND a.dp_no = b.dp_no) 
     AND NOT EXISTS (SELECT b.mn_no , 
           b.sb_no , 
           b.dp_no 
         FROM gltrxfil_sql b 
         WHERE a.mn_no = b.mn_no 
           AND a.sb_no = b.sb_no 
           AND a.dp_no = b.dp_no) 
     AND a.mn_no <> '00000000' 

Или

DELETE FROM SYACTFIL_SQL 
WHERE NOT EXISTS (SELECT b.mn_no , 
          b.sb_no , 
          b.dp_no 
        FROM gltrxhst_sql b 
        WHERE SYACTFIL_SQL.mn_no = b.mn_no 
          AND SYACTFIL_SQL.sb_no = b.sb_no 
          AND SYACTFIL_SQL.dp_no = b.dp_no) 
     AND NOT EXISTS (SELECT b.mn_no , 
           b.sb_no , 
           b.dp_no 
         FROM gltrxfil_sql b 
         WHERE SYACTFIL_SQL.mn_no = b.mn_no 
           AND SYACTFIL_SQL.sb_no = b.sb_no 
           AND SYACTFIL_SQL.dp_no = b.dp_no) 
     AND mn_no <> '00000000'