0

私はこれを持っています:

SELECT 
  journals.id,
  issues.created_on,
  user_id,
  journalized_id,
  journals.created_on
FROM journals, issues 
where issues.id=journals.journalized_id and journalized_id=23363

次の結果が表示されます。

 id    user_id  journalized_id       created_on  
-----  -------  --------------  -------------------
77996      182           23363  2013-10-07 13:41:45
77998      182           23363  2013-10-07 13:43:08
78000      174           23363  2013-10-07 13:54:26
78137      174           23363  2013-10-08 15:38:43
78269      167           23363  2013-10-09 17:14:26
78328      182           23363  2013-10-10 12:35:02
78442      167           23363  2013-10-11 18:06:13

ある「created_on」レコードと、同じjournalized_id.

例: 新しい行の最初のレコードは 0 ("2013-10-07 13:41:45"-"2013-10-07 13:41:45") ですが、次は ("2013-10- 07 13:43:08"-"2013-10-07 13:41:45")、次は何分でも何時間でも構いません。どうすればいいですか?

ありがとうございました

4

1 に答える 1

0

対応するテーブルはありませんが、この構文はチェックされています:

UPDATED は以前の日付を使用 & MySQL::TIMEDIFF():

SELECT journals.id, user_id, journalized_id
  , TIMEDIFF(journals.created_on,
    IFNULL(
      (SELECT MAX(t.created_on)
       FROM journals t
       INNER JOIN issues ON t.journalized_id=issues.id
       WHERE t.journalized_id=23363 AND t.id<journals.id),
    journals.created_on)
  )
FROM journals
INNER JOIN issues ON journals.journalized_id=issues.id
WHERE journalized_id=23363;

これは、変数 @dprev = 前の日付を使用してスピードアップする場合があります。

SET @dprev := 0;
SELECT journals.id, user_id, journalized_id
  , TIMEDIFF(journals.created_on,
    IF(@dprev, @dprev, journals.created_on))
  , @dprev := journals.created_on
FROM journals
INNER JOIN issues ON journals.journalized_id=issues.id
WHERE journalized_id=23363;

? 不便なのは、3 列目の @dprev も表示されることです。

于 2013-10-20T11:43:10.310 に答える