我正在编写一份新报告,但无法弄清楚其中的逻辑。我有一个类似于以下的表格:
M=消息(每个线程只有一个) R=响应(可以有任意数量的响应) N=注释(报告不需要,可以通过附加 WHERE 语句排除)。 对于每个 thread_id 获取 type=M 列的时间,然后获取 FIRST type=R 时间,比较这两个时间并报告,例如
.thread_col {
width: 80px;
}
.report_col {
width: 200px;
}
th {
text-align: left;
}
<table>
<tr>
<th class='thread_col'>Thread</th>
<th class='report_col'>Time to First Response</th>
</tr>
<tr>
<td>2</td>
<td>124 Minutes</td>
</tr>
<tr>
<td>3</td>
<td>18 Minutes</td>
</tr>
<tr>
<td>4</td>
<td>22 Minutes</td>
</tr>
</table>
我尝试过一些东西,但我的 MySQL 有点生疏。我想我们需要在那里进行子查询?
最佳答案
这对我来说听起来像是自加入:
SELECT t.*, MIN(t1.created)
FROM t
LEFT JOIN t as t1 ON t1.thread_id = t.thread_id AND t1.type = 'R'
WHERE t.type = 'M'
GROUP BY t.thread_id
您从表中选择所有类型 M,然后将最低响应时间加入其中。 必须是 LEFT JOIN,因为并非所有消息实际上都有响应。而且您需要这个小组,因为他们可能会有多个回复。
然后您就可以得到这两个时间,并可以用 PHP 计算输出的分钟差。
关于php - MySQL > 仅比较和报告某些行的时间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44933772/