zoukankan      html  css  js  c++  java
  • Sql Server的两个小技巧

    创建表结构 

    CREATE TABLE test(
        [id] int IDENTITY(1,1) NOT NULL PRIMARY KEY,
        [name] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL,
       createdTime DATETIME DEFAULT GETDATE()
    ) 

    使用output获得自增ID值

    没使用output前的写法,用Score_Identity函数获取自增值

    INSERT INTO dbo.test ( name ) VALUES ( N'测试数据')
    SELECT SCOPE_IDENTITY();

    结果如下

    使用output获得自增值,请仔细看 output写在 values之前

    INSERT INTO dbo.test ( name ) OUTPUT Inserted.id
     VALUES ( N'测试数据') 

    输出结果:

    返回多个字段,包括默认getdate()函数

    INSERT INTO dbo.test ( name ) OUTPUT Inserted.id,Inserted.name,Inserted.createdTime
     VALUES ( N'测试数据') 

    输出结果:

    用offset fetch实现分页功能

    用过mysql的同学对于分页语法特别简单,只需要用limit就可以完成分页。而在SQL SERVER里则需要用子查询完成分页,不过现在SQL SERVER也支持简单的分页,那就是用offset .. fetch来完成,不过要求SQL SERVER版本在2012及更高版本啊。

    使用Row_Number分页语法如下:

     SELECT * FROM (SELECT *,ROW_NUMBER () OVER (ORDER BY id)  AS rn FROM
     dbo.test)  AS t
     WHERE rn BETWEEN 11 AND 20

    输出结果

    使用offset分页,类似于linq里的skip + take函数。

    基本语法,offset 跳过的行数 rows Fetch Next 抓取的行数 rows only

    SELECT * FROM dbo.test ORDER BY id OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY

    输出结果

  • 相关阅读:
    Libev源码分析01:Libev中的监视器结构(C结构体实现继承)
    字符串处理函数
    sqrt函数实现
    Text Justification
    Minimum Path Sum
    Linux下如何查看系统启动时间和运行时间
    通过GDB重新获得进程的输出
    linux时间
    jmeter java请求:java.lang.VerifyError: Cannot inherit from final class
    面试——请带简历
  • 原文地址:https://www.cnblogs.com/sobaby/p/6875116.html
Copyright © 2011-2022 走看看