2010-02-19 328 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' 

这似乎适用于我。感谢大家的帮助。