簡體   English   中英

使用子選擇和多個主鍵字段和條件刪除數據

[英]Delete data with subselect and multiple primary key fields and conditions

我有此數據:

MyDate      id     hour   Value   insertionTime           id_agent
----------  -----  -----  ------  ----------------------  --------
2013-12-18  14     17     63      2013-12-18 11:35:47     10
2013-12-18  14     18     63      2013-12-18 11:35:47     10
2013-12-18  14     18     13      2014-01-14 11:02:27     10
2013-12-18  14     19     63      2013-12-18 11:35:47     10
2013-12-18  127    20     63      2013-12-18 11:35:47     10
...

我需要刪除所有具有一個列insertionTime不同於2014-01-14 11:02:27 ,並有另一行對同一MyDateidhour

我不知道如何在單個DELETE執行中執行此操作。 我不能使用聚合函數,並且由於PK上有多個鍵,所以我不知道如何進行子選擇。

理想情況下,它將是這樣的:

DELETE FROM Table1 WHERE MyDate = @ADate AND id_agent = 10
AND insertionTime <> '2014-01-14 11:02:27' AND AllMyTableKeys IN
 (SELECT AllTableKeys FROM Table1 WHERE MyDate = @ADate  AND id_agent = 10
  GROUP BY AllTableKeys HAVING COUNT(*) > 1)

在示例中,我想刪除第二行。

使用EXISTS解決方案:

SELECT * FROM MyTable a WHERE MyDate = '12/18/2013' AND id_agent = 10
AND insertionTime <> '01/14/2014 11:02:27' AND EXISTS 
  (SELECT * FROM MyTale b WHERE a.MyDate = b.MyDate AND a.hour = b.hour
   AND a.id = b.id AND insertionTime = '01/14/2014 11:02:27' AND id_agent = 10)

將其放入DELETE表單中是:

DELETE a FROM MyTable a WHERE...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM