如何返回WHERE子句的下一行?

时间:2013-12-09 20:02:50

标签: mysql sql

我正在使用mysql数据库服务器.. 我有下表,只包含一个包含以下数据的列(其中0是单独的排序整数)

Number
-------
0 
1
2
3
0
4
5
0
6
7
8
0
9
10
0
11

我希望得到每个0之后的第一个值,例如输出将是

Output
------
1
4
6
9
11

3 个答案:

答案 0 :(得分:3)

除非您指定ORDER BY子句,否则MySQL不保证退货订单。如果你按照插入它们的顺序得到值,那么这只是巧合。目前,没有办法可靠地做你想做的事。您需要添加一些内容来订购数据。设置为autoincrement的ID字段可能会这样做。

答案 1 :(得分:1)

SELECT id1 FROM table WHERE id IN
(SELECT t1.id+1 FROM table t1 
LEFT JOIN table t2 ON t1.id1=t2.id 
WHERE t2.id1 IS NULL);

SQL Fiddle

假设增量字段没有间隙,但因为它将被创建..

答案 2 :(得分:0)

首先,您应该将自动增量键添加到表中以保证记录的顺序。

Alter table T ADD id INT PRIMARY KEY AUTO_INCREMENT;

以下是查询:

select * from T as T1
Where (SELECT Number From T where Id<T1.Id ORDER BY ID DESC LIMIT 1) = 0
order by ID

SQL Fiddle demo