Strtotime字段来自where子句中的另一个表

时间:2015-07-10 07:29:40

标签: mysql sql

我有一堆日期(DATE字段类型)存储在一个表中,我需要查找第二个表中的条目,其日期不超过5个月,而不是第一个表。看起来应该是这样的:

SELECT first_table.id, second_table.value
FROM first_table
  LEFT JOIN second_table
    ON second_table.lastupdate >= '".date('Y-m-d', strtotime('-150 days', strtotime(first_table.lastupdate)))."'

当然,它不起作用,这只是你解释我想要做的事情的榜样。现在我使用两个查询来实现结果,但它根本没有效率,因为每个表中有超过300,000个条目。

/ *编辑* / 表结构是:

first_table
id - (AUTO_INCREMENT INT)
lastupdate (DATE)

second_table
id - (AUTO_INCREMENT INT)
value - (VARCHAR)
lastupdate - (DATE)

我需要按照存储在second_table中的日期进行过滤,而不是今天的'日期。

2 个答案:

答案 0 :(得分:1)

你为什么不用这个:

SELECT first_table.id, second_table.value
FROM first_table
LEFT JOIN second_table
ON second_table.lastupdate <= convert(first_table.lastupdate, Date) + interval 5 month

答案 1 :(得分:0)

SELECT first_table.id, second_table.value FROM first_table AS ft LEFT JOIN second_table as st ON ft.first_table.id=st.second_table.id WHERE st.second_table.lastupdate >= NOW() - INTERVAL 150 DAY