2010-10-25 5 views
0

je suis en train de faire comme ci-dessous son erreur de syntaxe donnant s'il vous plaît aiderExistant Count (*)

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

je dois faire une suppression que si le Cout est supérieur à 2

Répondre

3

Il existe deux conditions logiques dans le where: un exists et un > 2. Retirez l'un d'entre eux, comme:

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

Ce qui suit n'a pas de sens .

3

Vous pourriez manquer le EXISTS?

2

On ne sait pas exactement ce que vous essayez réellement de faire, et il n'est pas plus facile pour nous de comprendre une syntaxe invalide que pour SQL-server.

clause HAVING vous permettra de filtrer les résultats en fonction du nombre:

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

Mais en lisant entre les lignes, il semble tentent de supprimer les doublons d'une table, que je ferais avec:

DELETE FROM table 
WHERE (id, col1) NOT IN 
    (SELECT 
     id, 
     MAX(col1) 
    FROM table 
    GROUP BY id 
);