我有一堆日期(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中的日期进行过滤,而不是今天的'日期。
答案 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