1

我不确定这是否可能,但这里有。

我正在使用 MySQL,需要完成一个产生如下输出的语句。

我有一个包含完成日期字段和查询日期字段的表。

我需要获取这些字段之间的时差数据,我有以下代码

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,那么我们需要在另一个表中找到1的id,并从这个表中返回描述字段。

最终我们应该得到类似的东西


timediff TotalCount 描述
0 52 24 小时内
1 13 24-48小时
等 ............

4

2 回答 2

1

可以办到; 你有两个选择

  1. 使用查询结果创建一个临时表,然后将此表与您的第二个表连接起来
  2. 将您的第一个查询用作子查询并将其与您的第二个表连接起来

选项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 ...

希望这可以帮助你

于 2012-08-15T16:08:16.823 回答
0

日期计算会给你一堆值的小数点......

你应该使用ROUND()

或查找CEILFLOOR功能。

于 2012-08-15T16:00:17.947 回答