如何从特定条件下的表中获取最接近的记录



我有一个这样的表格。

Name            flag
--------------------------------
ABC             success
DEF             fail
GHI             success
JKL             fail
MNO             fail
PQR             fail
STU             fail

我必须在下面获得"成功"标志记录的下一个记录。我已经尝试了几次,但我是 mysql 的新手。

我的记录是这样的:-

Name            flag
--------------------------------
JKL             fail

1(我已经考虑了"id"列来考虑下一条记录

select * from yourtable where id = (select id from yourtable where flag='success')+1

2(我也考虑过使用 rownum

CREATE TABLE yourtable
(`Name` varchar(3), `flag` varchar(7))
;
INSERT INTO yourtable
(`Name`, `flag`)
VALUES
('ABC', 'fail'),
('DEF', 'fail'),
('GHI', 'success'),
('JKL', 'fail'),
('MNO', 'fail'),
('PQR', 'fail'),
('STU', 'fail')
;
create temporary  table t1 as 
select name,flag,@rownum:=@rownum+1 as rownum
from yourtable ,(SELECT @rownum := 0) as r;
select name,flag from t1 where rownum = 
(select rownum from t1 where flag='success')+1

查看此处-http://sqlfiddle.com/#!9/cbd4b/5

SELECT *
FROM [Table_1]
WHERE [Table_1].id > (SELECT [Table_1].id FROM [Table_1] WHERE flag = 'success')
LIMIT 1

应在标志"成功"后返回第一行

如果您有兴趣使用Windows函数。

选择 *,潜在客户(标志,成功(超过(按名称排序(作为next_comm 从你的桌子;

最新更新