Количество существует (*) - PullRequest
0 голосов
/ 25 октября 2010

Я пытаюсь сделать, как показано ниже, с указанием синтаксической ошибки, пожалуйста, помогите

DELETE FROM table 
WHERE col1 = 2
AND EXISTS ( 
               SELECT COUNT(*) 
               FROM table 
               WHERE col1 = 3
           ) > 2 ; 

Мне нужно удалить, только если cout больше 2

Ответы [ 4 ]

3 голосов
/ 25 октября 2010

В where есть два логических условия: exists и > 2.Удалите один из них, например:

DELETE  table 
WHERE   col1  = 2
        AND 
        ( 
        SELECT COUNT(*) 
        FROM table 
        WHERE col1 = 3
        ) > 2
3 голосов
/ 25 октября 2010

Вы можете просто пропустить EXISTS?

2 голосов
/ 25 октября 2010

Неясно, что вы на самом деле пытаетесь сделать, и нам не легче понять неверный синтаксис, чем для SQL-сервера.

Предложение HAVING позволит вам отфильтровать результаты по количеству:

SELECT COUNT(*) 
FROM table 
WHERE col1 = 3
HAVING COUNT(*) > 2

Но, читая между строк, кажется, пытается удалить дубликаты из таблицы, чтоделать с:

DELETE FROM table 
WHERE (id, col1) NOT IN 
    (SELECT 
        id, 
        MAX(col1)
    FROM table
    GROUP BY id
);
1 голос
/ 25 октября 2010

следующее бессмысленно ... EXISTS (...) > 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...