mySQL select 记录与之前 selected 记录的差异
mySQL select records based on difference to previously selected record
这很难解释,所以请耐心等待:
我正在尝试构建一个 mySQL 查询,该查询将 select 第一条记录,但在整数列满足特定差异要求之前不会 select 另一条记录。
例如,如果我要求的差异是 10,则标记的结果应该 select 从以下记录中编辑:
IntCol
-------------------
0 *
1
2
3
8
10 *
15
39 *
48
50 *
59
81 *
82
84
88
91 *
100
所以基本上,如果先前 selected 记录比当前记录至少少 10,则记录只会被 selected。
我尝试过的任何事情都没有取得任何成功。
是的,可以使用查询变量:
MySQL 5.6 架构设置:
CREATE TABLE Table1
(`IntCol` int)
;
INSERT INTO Table1
(`IntCol`)
VALUES
(0),
(1),
(2),
(3),
(8),
(10),
(15),
(39),
(48),
(50),
(59),
(81),
(82),
(84),
(88),
(91),
(100)
;
查询 1:
select intcol FROM
(
select intcol, Case when intcol - @i >= 10 then @i := intcol else @i end as correctCol
from Table1, (SELECT @i := 0) r
order by intcol
) a
WHERE intcol = correctCol
order by intcol
| intcol |
|--------|
| 0 |
| 10 |
| 39 |
| 50 |
| 81 |
| 91 |
这很难解释,所以请耐心等待: 我正在尝试构建一个 mySQL 查询,该查询将 select 第一条记录,但在整数列满足特定差异要求之前不会 select 另一条记录。
例如,如果我要求的差异是 10,则标记的结果应该 select 从以下记录中编辑:
IntCol
-------------------
0 *
1
2
3
8
10 *
15
39 *
48
50 *
59
81 *
82
84
88
91 *
100
所以基本上,如果先前 selected 记录比当前记录至少少 10,则记录只会被 selected。 我尝试过的任何事情都没有取得任何成功。
是的,可以使用查询变量:
MySQL 5.6 架构设置:
CREATE TABLE Table1
(`IntCol` int)
;
INSERT INTO Table1
(`IntCol`)
VALUES
(0),
(1),
(2),
(3),
(8),
(10),
(15),
(39),
(48),
(50),
(59),
(81),
(82),
(84),
(88),
(91),
(100)
;
查询 1:
select intcol FROM
(
select intcol, Case when intcol - @i >= 10 then @i := intcol else @i end as correctCol
from Table1, (SELECT @i := 0) r
order by intcol
) a
WHERE intcol = correctCol
order by intcol
| intcol |
|--------|
| 0 |
| 10 |
| 39 |
| 50 |
| 81 |
| 91 |