1

私のテーブル構造は次のとおりです。

SELECT * FROM `MYTABLE` WHERE `USERID` = 148 ORDER BY `TABLEDATE` DESC;

ID  USERID STATE_ID   TABLEDATE              
96  148    13         2013-01-08 06:11:34   
554 148     3         2013-01-03 04:46:08   
25  148     2         2013-01-02 04:46:07   

テーブル "MYTABLE" (=> STATE_ID DESC 制限 1,1 による順序) で、最後のエントリの日付が "2013-01-08" であるユーザーの 2 番目に高いエントリが必要です。

クエリを作成しようとしましたが失敗しました。助けてください。

SELECT F1.USERID,
  MAX(F2.TABLEDATE),
  F2.STATE_ID
FROM MYTABLE F1 
 JOIN MYTABLE F2 ON F1.USERID = F2.USERID WHERE
   F1.STATE_ID = 13 AND
   F2.TABLEDATE < F1.TABLEDATE AND
   F1.TABLEDATE <= '2013-01-08 23:59:59' AND
   F1.TABLEDATE >=  '2013-01-08 00:00:00' 
 GROUP BY F1.USERID 

出力

148 2013-01-03 04:46:08 2

期待される出力

148 2013-01-03 04:46:08 3
4

1 に答える 1

0

2 番目に高い値を持つ行が必要な場合は、次のState_IDように簡単に実行できます。

SELECT *
FROM 
(
   SELECT *
   FROM yourTable
   LIMIT 2
) AS sub
ORDER BY State_ID 
LIMIT 1;
于 2013-02-14T08:52:13.860 に答える