从表中选择,直到找到某个值

时间:2013-10-17 10:04:03

标签: mysql

我有一张这样的表:

+--------+---------------------+------------+
| 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的所有记录?

2 个答案:

答案 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