2010-10-25 52 views
0

我试图做的是低于其给予语法错误,请帮助已存在COUNT(*)

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

我需要做删除只有当COUT大于2

回答

3

where有两个逻辑条件:一个exists和一个> 2。删除其中的一个,如:

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

以下是无意义... EXISTS (...) > 2

3

你可能只是错过了EXISTS

2

目前还不清楚你实际正在做什么,对我们来说理解无效的语法并不比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 
);