2013-11-15 45 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 ...)