2010-10-25 53 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 
);