存在数(*)

时间:2010-10-25 10:08:22

标签: sql sql-server sql-server-2005 tsql

我正在尝试按照以下方式执行语法错误,请帮助

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

我只有在cout大于2

时才需要删除

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

你可能会错过EXISTS

答案 2 :(得分:2)

目前还不清楚你实际上要做什么,而且我们理解一个无效的语法并不比SQL-server更容易。

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
);

答案 3 :(得分:1)

以下是没有意义的... EXISTS (...) > 2