我不确定这是否可行,但可以。
我正在使用 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 小时
等等等等…………
最佳答案
这是可以做到的;你有两个选择
- 使用您的查询结果创建一个临时表,然后将此表与您的第二个表连接
- 将您的第一个查询用作子查询并将其与您的第二个表连接
选项 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 ...
希望对你有帮助
关于计算值的MySQL连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11972739/