我不确定这是否可行,但现在就去了。
我正在使用MySQL,需要完成一个产生如下输出的语句。
我有一个包含completedate字段和enquirydate字段的表。
我需要获得这些字段之间时间差的数据,我有以下代码
SELECT DATE (completedate) - DATE (enqdate) AS `timediff`, COUNT(*) AS TotalCount
FROM cia_enquiry
WHERE (DATEDIFF(CURDATE(), enqdate) < 30) AND completedate > 1
GROUP BY `timediff`
ORDER BY `timediff` ASC
上述代码只输出日期与过去30天内的总数之间的天数(并且不计算那些未完成的条目)
我现在需要在另一个表中引用“timediff”结果并从该表中提取另一个字段。
例如,如果timediff = 1,那么我们需要在另一个表中找到id为1并从该表中返回description字段。
最终我们应该得到类似于
的东西 timeDiff测量TOTALCOUNT描述
0 52 24小时内
1 13 24-48hrs
等等.........
答案 0 :(得分:1)
可以做到;你有两个选择
选项1
create temporary table temp_tbl
select
...
;
# Important: create the indexes you need
alter table temp_tbl
add index index1(field1), ... ;
# Now join your second table
select a.*, b.*
from temp_tbl as a join tbl2 as b on ...;
选项2
select a.*, b.*
from (
select ... # here is your query
) as a join tbl2 as b on ...
希望这有助于你
答案 1 :(得分:0)
日期计算会给你一堆价值小数点......
你应该使用ROUND()
或查找CEIL
和FLOOR
个功能。