如何选择符合条件的行旁边的所有行?但考虑到没有像 ID 字段这样的连续 RowID
这是10行的表结构,但将来行数会增加。
纯文本:
ID Date N1
1 DateTime 9
2 DateTime 2
3 DateTime 5
4 DateTime 9
5 DateTime 3
6 DateTime 6
7 DateTime 7
8 DateTime 9
20 DateTime 3 //Sequence broken
21 DateTime 9
笔记: “DateTime”字符串只是符号性的,它可以是任何日期时间。
我想知道第一个N1数字后面的数字:9
我尝试了几种方法,但结果不是我想要的。
预期结果是:
ID Date N1
2 DateTime 2
5 DateTime 3
20 DateTime 3
实现此目的的简单方法已发布在这问题,但前提是 RowID 保持序列。
答案1
您可以创建两个临时表其中一个使用变量为@row_num
每个行号创建一个索引,并且无论值如何,都会将每个行号递增一RowID
。然后从这个临时表中,您将从row_num+1
中选择N1
值等于的列9
。从那里,您可以选择值匹配的列id
和N1
列,row_num
从而获得所需的结果。
SQL 查询
SET @row_num:=0;
DROP TABLE IF EXISTS t1;
CREATE TEMPORARY TABLE t1 (SELECT @row_num:=@row_num+1 AS row_num, id, N1 FROM numbers);
DROP TABLE IF EXISTS t2;
CREATE TEMPORARY TABLE t2 (Select row_num+1 as row_num FROM t1 WHERE N1 = 9);
SELECT id, N1 FROM t1
WHERE row_num IN (Select * From t2);
确认
从数字中选择 * (此处缺少
RowID
等号5
)以上 SQL 查询