是否可以在不使用限制的情况下从表中选择下一个较低的数字。
例如:如果我的桌子有10, 3, 2 , 1
我正在尝试select * from table where col > 10
。
我期待的结果是3
。我知道我可以使用限制 1,但是没有它可以做到吗?
试试这个查询
SELECT
*
FROM
(SELECT
@rid:=@rid+1 as rId,
a.*
FROM
tbl a
JOIN
(SELECT @rid:=0) b
ORDER BY
id DESC)tmp
WHERE rId=2;
| RID | ID | TYPE | DETAILS |
------------------------------------
| 2 | 28 | Twitter | @sqlfiddle5 |
另一种方法
select a.* from supportContacts a inner join
(select max(id) as id
from supportContacts
where
id in (select id from supportContacts where id not in
(select max(id) from supportContacts)))b
on a.id=b.id
| ID | TYPE | DETAILS |
------------------------------
| 28 | Twitter | @sqlfiddle5 |
或者,此查询将始终根据内部 where 子句获得第二高的数字。
SELECT *
FROM
(
SELECT t.col,
(
SELECT COUNT(distinct t2.col)
FROM tableName t2
WHERE t2.col >= t.col
) as rank
FROM tablename t
WHERE col <= 10
) xx
WHERE rank = 2 -- <<== means second highest
如果您想从表中获取下一个较低的数字
你可以用这个查询得到它:
SELECT distinct col FROM table1 a
WHERE 2 = (SELECT count(DISTINCT(b.col)) FROM table1 b WHERE a.col >= b.col);
稍后再如果您想获得第三个较低的数字,您可以在 where 子句中通过 3 代替 2
再次,如果您想获得第二个更高的数字,只需更改内部查询中 where 子句的条件
a.col <= b.col