2010-02-19 341 views
1

我有一個包含相關記錄(相同記錄的多個修訂版)的表。每個記錄都有一個字符串字段,類似於日期(日期,時間和microtime)。我想選擇比特定日期更早的所有記錄。如果一條記錄的相關記錄比特定日期更新,我不想選擇任何相關記錄。該選擇語句的任何想法?最終,它將是一個刪除語句。根據一條記錄的列值選擇多條記錄

編輯:一些示例行

id shared_id date       type  other_data... 
1  2   2010-01-01 01:02:03.1234567 original ... 
2  3   2010-01-15 11:12:03.1234733 original ... 
3  2   2010-02-01 03:04:04.5465654 amendment ... 

如果我的截止日期是「2010-01-31」,我希望選擇ID#2只因爲ID#1修正案較新的截止日期。

+0

你可以從你的數據庫中添加一些示例數據嗎? – Dominik 2010-02-19 18:09:30

回答

0

也許你可以試試DATEDIFF()函數,檢查了這一點: Link 1

或者這一個:Link 2

或者,也許你可以嘗試經典的查詢(SELECT FROM表WHERE數據< = anotherdata ),但在這種情況下,你需要將這兩個數據的時間戳格式轉換

0
DELETE from tablename where relatedField = 'relatedValue' AND dateField <= dateToDeleteFrom 

東西沿着這些線路應該做你需要它做什麼,如果我理解你的scena里約熱內盧。如果您提供樣本數據集,我可以調整陳述以更準確地表示您的需求,但我認爲這是一個很好的起點。

HTH, 的Jc

1

我發現這個link幫助我產生了select語句。

SELECT DISTINCT T.shared_id,T.date,T.id 
FROM table T WHERE T.date = ( 
SELECT MAX(date) FROM table WHERE shared_id = T.shared_id) 
AND T.date < 'my_cut_off_date_string' 

這似乎適用於我。感謝大家的幫助。