zoukankan      html  css  js  c++  java
  • SQL 问题:已知主键id 和排序条件 这条记录的上一条或下一条记录

    设本记录ID为@ID

    则上条记录为:
    SELECT TOP 1 * FROM TABLE1 WHERE 排序字段<(select
    排序字段 from table1 where id=@id) order by 排序字段 desc
    下条记录为:
    SELECT TOP 1 *
    FROM TABLE1 WHERE 排序字段>(select 排序字段 from table1 where id=@id) order by 排序字段

    ==========================
    不使用记录集是什么意思?是结果不要结果集,而要赋值给变量吗?

    有了单条记录的记录集,您还不会将它存入变量吗?格式是这样:
    则上条记录为:
    set @idpre=(
    SELECT TOP 1
    id FROM TABLE1 WHERE 排序字段<(select 排序字段 from table1 where id=@id) order by
    排序字段 desc
    )
    下条记录的ID为:
    set @idpre=(
    SELECT TOP 1 id FROM TABLE1
    WHERE 排序字段>(select 排序字段 from table1 where id=@id) order by 排序字段
    )

    =======================
    问得好!
    设排序字段依次为:FIELD1 INT,FIELD2
    VARCHAR(30)FIELD3 DATETIME
    set @idpre=(
    SELECT TOP 1 id FROM TABLE1

    WHERE
    (convert(varchar(10000000000+field1))+space(30-len(field2))+field2,convert(varchar,field3,120))

    >
    (select
    排序字段=(convert(varchar(10000000000+field1))+space(30-len(field2))+field2,convert(varchar,field3,120))

    from table1 where id=@id)
    order by 排序字段

    --关键是将排序的所有字段转换为定长的VARCHAR类型后组合到一起。
    ========================

    要求不简单,当然就没有更简单的了,其实这语句不算很长,逻辑也不是很复杂
  • 相关阅读:
    IntelliJ IDEA导包快捷键
    maven命令创建web骨架项目
    v2.0版本小程序开发心得(代码之外)
    装饰器模式
    闭包
    git diff的文字说明
    WSGI和CGI
    word-wrap、white-space和word break的区别
    Javascript中正则的 match、test、exec使用方法和区别
    Git 内部原理
  • 原文地址:https://www.cnblogs.com/scgw/p/2378020.html
Copyright © 2011-2022 走看看