2013-11-15 42 views
1

我有一张表列出耗材及其库存部门...一个供应可以有多个库存部门,因此它们将具有相同供应但具有不同部门的多个行(有些具有多个其他不)我有一个脚本来选择我不想删除的所有耗材。删除SELECT语句未选择的所有行

SELECT supply_num, 
     Min(tisclient_num)    AS tisclient_num, 
     Min(invdept_num)     AS invdept_num, 
     Min(usage_freq)     AS usage_freq, 
     Min(qty_on_hand)     AS qty_on_hand, 
     Min(min_level)     AS min, 
     Min(max_level)     AS max, 
     Min(primary_supply_location_num) AS location, 
     Min(par_level)     AS par 
FROM mm_supply_tisclient_invdept 
GROUP BY supply_num; 

如何删除此表中未选中的所有内容?

+2

您可以使用您编写的查询作为子查询并使用NOT IN –

+5

从您的表格中删除所有那些“MIN”在那里 - 不能保证它们中的任何一个或全部来自一个原始行。因此,这不仅仅是选择性删除的问题,而且可能是UPDATE和DELETE的组合 - 您可能希望在其他位置转储此数据,清除表格,然后重新导入此数据,如果它的意图是该表的完整行。 –

+0

我认为杰克是正确的;然而考虑到上面的查询返回多列,不会存在更合适吗?我不认为你可以按照原样对查询做一个NOT IN;它应该返回一个错误。 –

回答

1

你试过delete from TABLE_NAME where FIELD not in (select ...)