# last 1460528373946335233 next 1460528876793053186
select id , title , lastId , nextId from (
select id , title, lag(id,1) over
(order by id) as lastId,lead(id,1) over
(order by id) as nextId from ec_message where deleted = 0
) as Temp where id = 1460528876759498754 ;
#② 因为 雪花算法 : 时间戳+机器id+递增序列号 组成,所以 用这个思路
# last 1460528373946335233 next 1460528876793053186
select id, title,
(select id as lastId from ec_message
# order by id desc limit 1 就可以 取得 最大值效果 类似于max
where deleted = 0 and sign(1460528876759498754-id) >0 order by id desc limit 1 ) as lastId,
(select id as lastId from ec_message
where deleted = 0 and sign(id-1460528876759498754) >0 order by id asc limit 1 ) as nextId
from ec_message
where deleted = 0
and id = 1460528876759498754;
# last 1460528373946335233 next 1460528876793053186
select id, title,
(select max(id) as lastId from ec_message
# order by id desc limit 1 就可以 取得 最大值效果 类似于max
where deleted = 0 and sign(1460528876759498754-id) >0 ) as lastId,
(select min(id) as nextId from ec_message
where deleted = 0 and sign(id-1460528876759498754) >0 ) as nextId
from ec_message
where deleted = 0
and id = 1460528876759498754;
# 大于 目标id 的最小id,小于目标id 的最大id
# 将数据分成三部分 :小于目标id的,等于目标id的,大于目标id的,然后取最大,最小的id
# 说明:max(),min() 是分组后的最大最小值,select max(id) from table ,是最大的一个分组
select case
when sign(id - 1460528876759498754) < 0 then max(id)
when sign(id - 1460528876759498754) = 0 then id
when sign(id - 1460528876759498754) > 0 then min(id)
end as id
from ec_message
where deleted = 0
group by sign(id - 1460528876759498754)
order by id;
select * from ec_message where id in
(select
when SIGN(id-1460528876759498754)>0 THEN MIN(id)
when SIGN(id-1460528876759498754)<0 THEN MAX(id)
ELSE id
from ec_message
where deleted = 0
# 分组的标准
GROUP BY SIGN(id-1460528876759498754)
ORDER BY SIGN(id-1460528876759498754)
ORDER BY id
获取
当前
文件上
一条
与下
一条
记录
的原理是上
一条
的sql语句,从news表里按从大到小的顺序选择
一条
比
当前
ID小的新闻,下
一条
的sql语句,从news表里按从小到大的顺序选择
一条
比
当前
ID大的新闻。
如果ID是主键或者有索引,可以直接查找:
1.select * from table_a where id = (select id from table_a where id < {$id} order by id desc limit 1);
2.select * from tab
上
一条
:
select * from table_a where id = (select id from table_name where id < {$id} order by id desc limit 1);
下
一条
:
select * from...
SELECT @num:=@num+1 AS rownum, holiday.*
FROM holiday,(SELECT @num:=0) as r
ORDER BY cr_date
)t1,(
-- 查询
当前
记录
对应序号
select curNum from(
SELECT @num2:=@num2+1 AS curNum, holiday.*
FROM holiday ,(SELECT @num2
ii> 之所以会出现
mysql
或者
mysql
dump这样的命令找不到,我们可以打开/usr/bin文件夹,发现bin目录中并没有
Mysql
打头的UEF文件,而在/usr/local/
mysql
/bin中可以找到这样的文件,说明
mysql
的命令默认安装路径是不在bin目录中的,因而我们需要在环境变量中配置
mysql
的所有命令。使用这个协议连接
MySQL
需要一个物理文件,文件的存放位置在配置文件中有定义,值得一提的是,这是所有协议中最高效的一个。在该文件中添加
mysql
/bin的目录。这个工具界面比较简单。
上
一条
的sql语句,从table表里按从大到小的顺序(正序ASC)选择
一条
比
当前
ID小的
记录
。
下
一条
的sql语句,从news表里按从小到大的顺序(倒序DESC)选择
一条
比
当前
ID大的新闻。
上
一条
:
select * from table where id = (select id from table where id < {$i...
找到一篇博客给了灵感,找不到博客地址,勿怪,贴代码
以下我将sql写进了存储过程中
CREATE DEFINER=“myqsl权限名称” PROCEDURE `存储过程名称`(IN `book_id_in` int(11),IN `book_id_in_type` int(11))
BEGIN
#book_id_in_type 1上一...
接上篇sql 排序,排序后,可查出上下条
数据
。Row_Number() 函数给表添加了一列序列号且不重复,即可根据
当前
数据
对应的值,找上下条
数据
。依旧是上文的例子,如下图,假如要查“工单号为‘order005’的下
一条
数据
”:实现:select * from
(select Date 日期,OrderID 工单号,OrderSeq 工单顺序,Row_Number() over(order by ...
设本
记录
ID为@ID则上条
记录
为:SELECT TOP 1 * FROM TABLE1 WHERE 排序字段排序字段 from table1 where id=@id) order by 排序字段 desc下条
记录
为:SELECT TOP 1 *FROM TABLE1 WHERE 排序字段>(select 排序字段 from table1 where id=@id) order by 排序字...
<select id="selectByAreaDevNumList" resultMap="BaseResultMap" parameterType="
java
.util.List" >
select
area ,COUNT(*)
from c...