mySQL基于与先前选择的记录

时间:2015-10-01 03:37:56

标签: mysql sql subquery

这很难解释所以请耐心等待: 我正在尝试构建一个mySQL查询,该查询将选择第一个记录,但在整数列满足某个差异要求之前,不会选择另一个记录。

例如,如果我要求的差异为10,则应从以下记录中选择标记的结果:

IntCol
-------------------
0 *
1 
2
3
8
10 *
15
39 *
48
50 *
59
81 *
82
84
88
91 *
100

所以基本上,只有先前选择的记录比当前记录少至少10,才会选择记录。 我所尝试过的任何事情都没有成功。

1 个答案:

答案 0 :(得分:2)

是的,可以使用查询变量:

SQL Fiddle

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

<强> Results

| intcol |
|--------|
|      0 |
|     10 |
|     39 |
|     50 |
|     81 |
|     91 |