SQL命令搜索记录并删除整个组(如果x位于)

SQL命令搜索记录并删除整个组(如果x位于),sql,db2,Sql,Db2,SQL DB2 这是我必须开始的 SELECT DISTINCT Last_Name, First_Name, State FROM AddressTable; 我试图修改查询以查看AddressTable,如果State=IL,则应该过滤掉所有姓氏相同的人 如果我的结果在下面,那么我希望删除所有姓琼斯的记录 Smith, Bob, MO Smith, Eric, MO Jones, Bob, MO Jones, Eric, IL Jones, Tim, NE 我不清楚您是

SQL DB2

这是我必须开始的

SELECT DISTINCT     
Last_Name, First_Name, State

FROM    AddressTable;
我试图修改查询以查看
AddressTable
,如果
State=IL
,则应该过滤掉所有姓氏相同的人

如果我的结果在下面,那么我希望删除所有姓琼斯的记录

Smith, Bob, MO
Smith, Eric, MO
Jones, Bob, MO
Jones, Eric, IL
Jones, Tim, NE

我不清楚您是要删除行,还是只想筛选行。此处筛选行:

SELECT DISTINCT Last_Name, First_Name, State
FROM    AddressTable X
WHERE NOT EXISTS (
    SELECT 1 FROM AddressTable Y
    WHERE X.NAME = Y.NAME 
      AND Y.STATE = 'IL'
);

对于这种
DELETE
语句,您不需要
DISTINCT
(并且作为
子句中
的一部分的子句也没有意义)。但是,我很确定OP只是希望不在
SELECT
结果集中包含记录,而不是从源表中实际删除它们。
select * 
    from AddressTable 
    where Last_Name not in 
        (
        select Last_Name 
        from AddressTable
        where State = 'IL'
        )