2014-03-07 24 views
0

我的表是:從SQL檢索最新的日期,並獲得差異

QuestionMaster

 
+-----+---------------------+ 
|qId |quesDate    | 
+-----+---------------------+ 
|1 |2014-02-04 06:12:10 | 
+-----+---------------------+ 
|2 |2014-02-05 18:46:15 | 
+-----+---------------------+ 
|3 |2014-02-05 08:06:05 | 
+-----+------+--------------+ 

AnswerMaster

 
+--------+------+---------------------+ 
|answerId|quesId|answerDate   | 
+--------+------+---------------------+ 
|1  |1  |2014-02-08 11:10:05 | 
+-----------+------+------------------+ 
|2  |1  |2014-02-10 18:06:05 | 
+--------+------+---------------------+ 
|3  |1  |2014-02-07 12:07:10 | 
+--------+------+---------------------+ 
|4  |2  |2014-02-09 09:18:05 | 
+--------+------+---------------------+ 
|5  |2  |2014-03-01 08:06:05 | 
+--------+------+---------------------+ 
|6  |2  |2014-02-15 16:10:45 | 
+--------+------+---------------------+ 
|7  |2  |2014-02-12 06:35:25 | 
+--------+------+---------------------+ 
|8  |3  |2014-03-05 08:09:05 | 
+--------+------+---------------------+ 
|9  |3  |2014-02-25 15:02:19 | 
+--------+------+---------------------+ 

我想對於一個具體的問題在天最新的應答的時間差。我試過這個查詢。 我不想使用子查詢。

SELECT 
question.qid as questionId, 
timestampdiff(DAY,question.quesDate,answer.answerDate) AS `answerTime` 
FROM QuestionMaster question 
Left Join AnswerMaster answer on question.qid = answer.quesid 
group by question.qid ; 

預期成果是:

 
+-----+-----------------+ 
|qId |DifferenceInDays | 
+-----+-----------------+ 
|1 |6    | 
+-----+-----------------+ 
|2 |23    | 
+-----+-----------------+ 
|3 |28    | 
+-----+-----------------+ 

什麼建議嗎? 在此先感謝。

+0

如果我在該上下文中使用GROUP BY,我不知道該期待什麼 – Strawberry

+0

「我不想使用子查詢?」你是認真的嗎?你選擇了一種以某種方式工作的語言和技術,但你不想使用它?你有這個理由嗎? –

+0

這只是我實際查詢的一部分。這就是爲什麼可能有性能問題。 – unknown

回答

1

您需要採取MAX(answerDate),否則MySQL將使用每個組內的一些不確定記錄的值。

SELECT q.qId, DATEDIFF(MAX(a.answerDate), q.quesDate) 
FROM  QuestionMaster q JOIN AnswerMaster a ON a.quesId = q.qId 
GROUP BY q.qId 

請參閱sqlfiddle