![](/img/trans.png)
[英]OLAP Data Warehouse - composite primary key as multiple or single fields
[英]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
,並有另一行對同一MyDate
, id
和hour
。
我不知道如何在單個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.