我有一個包含設備標識,設備讀取類型和設備讀取日期的八列的表。這三個欄是這樣的: Example TableSQL刪除基於多列的行
我想什麼做的是刪除每一行鍼對DevReadType = XX和每一行與匹配設備號,但一個DevReadDate小於日當DevReadType =「XX 」。我一直無法找到這種複雜條件的例子。幫助將不勝感激!
我有一個包含設備標識,設備讀取類型和設備讀取日期的八列的表。這三個欄是這樣的: Example TableSQL刪除基於多列的行
我想什麼做的是刪除每一行鍼對DevReadType = XX和每一行與匹配設備號,但一個DevReadDate小於日當DevReadType =「XX 」。我一直無法找到這種複雜條件的例子。幫助將不勝感激!
如果我理解正確的話,我會建議沿着線的東西:
DELETE d
FROM device d
JOIN (
SELECT DevNum, MAX(DevReadDate) maxDevReadDate
FROM device
WHERE devReadType = 'xx'
GROUP BY DevNum
) b
ON d.DevNum = b.DevNum AND (d.DevReadDate < b.maxDevReadDate OR d.devReadType = 'xx')
謝謝!這正是我需要的! – mdarr
delete from device
where DevNum = @devicenum
and DevReadType = 'XX'
and DevReadDate < @date
您可以先運行選擇againsr設備表測試你的where子句:
select *
from device
where DevNum = @devicenum
and DevReadType = 'XX'
and DevReadDate < @date
感謝Max的迴應,在我的表中有250萬行,'XX'在DevReadType列中出現了12,000次。你知道是否有辦法做到這一點刪除使用變量,而不是指定確切的實例,需要刪除? – mdarr
你的rdbms是什麼?向我們展示樣本數據和預期結果。 \t請閱讀[**如何提問**](http://stackoverflow.com/help/how-to-ask) \t \t這裏是[** START **]( http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)瞭解如何提高您的問題質量並獲得更好的答案。 –