根据一个记录的列值选择多个记录

时间:2010-02-19 18:06:55

标签: php mysql select

我有一个包含相关记录的表(同一记录的多个修订版)。每条记录都有一个字符串字段,类似于日期(日期,时间和微缩时间)。我想选择所有早于特定日期的记录。如果记录的相关记录比特定日期更新,我不想选择任何相关记录。选择陈述的任何想法?最终,它将是一个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的修正案比截止日期更新。

3 个答案:

答案 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