表单Mysql连接

表单Mysql连接,mysql,Mysql,我的表格结构是: 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

我的表格结构是:

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=>order by STATE_ID DESC limit 1,1中用户的最高输入秒数,其最后一个输入日期为2013-01-08

我尝试形成查询,但失败。请帮助

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 3

如果希望得到State_ID值第二高的行,只需执行以下操作:

SELECT *
FROM 
(
   SELECT *
   FROM yourTable
   LIMIT 2
) AS sub
ORDER BY State_ID 
LIMIT 1;

子查询不好,请建议通过join@SheldonCooper-我真的不知道如何使用连接来实现这一点。但是,为什么不使用子查询呢?它们并不总是坏的。此外,如果子查询是执行您要执行的操作的唯一方法,该怎么办?@SheldonCooper您可以将日期条件放入子查询中。
SELECT *
FROM 
(
   SELECT *
   FROM yourTable
   LIMIT 2
) AS sub
ORDER BY State_ID 
LIMIT 1;