按ID分组并删除值

时间:2014-09-16 04:03:29

标签: sql sql-server

我正在修改我的描述以使其更有意义。 我想选择没有值= Z2的所有ID;我怎么能用sqlserver查询呢? 下面是数据示例

PK ID    Value

1   1    x1    
2   1    x2    
3   1    x3  
4   1    X4   
5   2    X1   
6   3    z2  
7   2    Z2
8   4    X1
9   4    X2

3 个答案:

答案 0 :(得分:2)

编辑:由于您澄清了自己的问题,只想选择不具有z2值的ID,因此查询变得更加简单。只需选择所有ID,然后使用z2删除EXCEPT值的内容;

SELECT id FROM mytable
EXCEPT 
SELECT id FROM mytable WHERE value='z2';

An SQLfiddle to test with

(我假设您希望此查询中不区分大小写)

答案 1 :(得分:0)

DELETE FROM table where value <> 'z2';

答案 2 :(得分:0)

你在问题​​中说过你只想选择没有值= Z2的所有ID。那么为什么要进行DELETE查询呢?如下所示的简单SELECT查询应该为您提供预期的输出:

SELECT ID 
FROM Table
WHERE Value NOT IN ('Z2')

从查询中,您可以看到我使用了一个SQL子句 - NOT IN,它将从您的表中检索时从特定列中排除某些值。您不需要DELETE查询来查看这些ID。

为了更好地理解,请参阅此链接:SQL: NOT Condition