0

我有一张这样的桌子:

+--------+---------------------+------------+
| 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          |

如何选择所有记录,其 atimestamp大于与 a oftimestamp关联的最大记录?value0

4

2 回答 2

0

另一种方法,你可能会发现更容易理解。

SELECT t.* 
FROM t 
INNER JOIN
(
    SELECT MAX(timestamp) AS MaxtimeStamp
    FROM t 
    WHERE `value`='0'
) sub1
ON t.timestamp > Sub1.MaxtimeStamp
于 2013-10-17T13:28:20.873 回答
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)

- 但再一次 - 当您指定特定顺序时,可以执行此操作。

于 2013-10-17T10:09:01.630 回答