我有一个包含相关记录的表(同一记录的多个修订版)。每条记录都有一个字符串字段,类似于日期(日期,时间和微缩时间)。我想选择所有早于特定日期的记录。如果记录的相关记录比特定日期更新,我不想选择任何相关记录。选择陈述的任何想法?最终,它将是一个REMOVE声明。
编辑:一些示例行
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 :(得分: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'
这似乎对我有用。感谢大家的帮助。
答案 1 :(得分:0)
也许你可以试试DATEDIFF()函数,看看这个: Link 1
或者这一个:Link 2
或许您可以尝试经典查询(SELECT FROM table WHERE data&lt; = anotherdata),但在这种情况下,您需要以时间戳格式转换这两个数据
答案 2 :(得分:0)
DELETE from tablename where relatedField = 'relatedValue' AND dateField <= dateToDeleteFrom
如果我了解你的情景,那些沿着这些方向的东西应该做你需要它做的事情。如果您提供样本数据集,我可以调整语句以更准确地表示您的需求,但我认为这是一个很好的起点。
HTH, JC