我有一张这样的表:
+--------+---------------------+------------+
| id | timestamp | value |
+--------+---------------------+------------+
| 566076 | 2013-10-17 11:16:38 | 1 | -> get these
| 565989 | 2013-10-17 11:15:27 | 1 | ->
| 565881 | 2013-10-17 11:14:17 | 1 | ->
| 565860 | 2013-10-17 11:14:10 | 1 | ->
| 565869 | 2013-10-17 11:14:09 | 0 |
| 565869 | 2013-10-17 11:14:08 | 0 |
| 565869 | 2013-10-17 11:14:07 | 0 |
| 565869 | 2013-10-17 11:14:06 | 1 |
如何选择timestamp
大于与timestamp
value
相关联的最大0
的所有记录?
答案 0 :(得分:0)
这取决于你的意思是什么'价值点击0'。在SQL方面没有'一个订单',只有'某个列的订单'。您可以使用
轻松解决问题SELECT * FROM t WHERE `value`='1' ORDER BY `timestamp` DESC
- 其中订单列为timestamp
,降序(来自您的示例)。您可能还想在行中添加LIMIT
。也许,你想要在某个订单的第一个零之前找到所有东西,然后:
SELECT
*
FROM
t
WHERE
value=1
AND
timestamp>(SELECT timestamp FROM t WHERE `value`='0' ORDER BY `timestamp` DESC LIMIT 1)
- 但又一次 - 当你指定了某个订单时,可以这样做。
答案 1 :(得分:0)
另一种方法,您可能会发现您更容易理解。
SELECT t.*
FROM t
INNER JOIN
(
SELECT MAX(timestamp) AS MaxtimeStamp
FROM t
WHERE `value`='0'
) sub1
ON t.timestamp > Sub1.MaxtimeStamp