• 日常工作中收集整理的MSSQL 技巧


    1、只复制一个表的结构

    select * into [tableName1] from [tableName2] -- 表的复制
    select
    top 0 * into [tableName1] from [tableName2] -- top 0 的妙用

    select * into b from a where 1<>1 --where 1<>1
    select top 2 * from dbo.table1 order by newid() --随即取纪录

    --SQL 插入语句得到自动生成的递增ID 值
    insert into Table1(Name,des,num) values ('ltp','thisisbest',10);
    select @@identity as 'Id'

    --实现是1 或0 想显示为男或女
    select name,Sex=
    case Sex
    when '1' then '男'
    when '0' then '女'
    end
    from Tablename

    --嵌套子查询
    select a,b,c from Table1 where a IN (select a from Table2)

    --显示文章、提交人和最后回复时间
    select a.title,a.username,b.adddate
    from tablename a,(select max(adddate) adddate from tablename where
    tablename.title=a.title) b

    --随机提取条记录的例子
    SQL Server:Select Top 10 * From Tablename Order By NewID()
    Access:Select Top 10 * From Tablename Order By Rnd(ID)
    --Rnd(ID) 其中的ID 是自动编号字段,可以利用其他任何数值来完成,比如用姓名字段UserName)
    Select Top 10 * From 表Order BY Rnd(Len(UserName))
    MySql:Select * From 表Order By Rand() Limit 10

    --在同一表内找相同属性的记录
    select UserID from Accounts_Users
    where UserName is not null
    group by UserID
    having count (*)>1

    --查询类别所有的产品对应数据
    SELECT CategoryName,ProductName
    FROM Categories LEFT JOIN Products
    ON Categories.CategoryID = Products.CategoryID;

    --按范围查询编号在2 到5 之间的用户信息
    select * from UserValue where UserID between 2 and 5

    --日程安排提前5 分钟提醒
    Select * from TabSchedule where datediff(minute,getdate(),开始时间)<5

    --得出某日期所在月份的最大天数
    SELECT DAY(DATEADD(dd, -DAY('2008-02-13'),DATEADD(mm, 1, '2008-02-13'))) AS 'DayNumber'

    --按姓氏笔画排序
    Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as

    --通配符的一些用法
     select * from tablename where column1 like '[A-M]%'
    --这样可以选择出column 字段中首字母在A-M 之间的记录

    select * from tablename where column1 like '[ABC]%'
    --这样可以选择出column 字段中首字母是A 或者B 或者C 的记录

    select * from tablename where column1 like '[A-CG]%'
    --这样可以选择出column 字段中首字母在A-C 之间的或者是G 的记录

    select * from tablename where column1 like '[^C]%'
    --这样可以选择出column 字段中首字母不是C 的记录


     

    注:数据库为SQL Server
    ①模糊查询__在好几个字段中模糊查询某字符串
    SELECT userName, name, tel, email, pwd
    FROM AD_APPLY
    WHERE (userName + name + tel + email + pwd LIKE '%AXzhz%')
    【重点】最后一句,所有字段名用"+"连接起来.

    ②模糊查询_Like和Left,,,,这两条语句执行结果相同
    SELECT *
    FROM bbs_forums
    WHERE (LTRIM(name) LIKE '嘉年华'%')

    SELECT *
    FROM bbs_forums
    WHERE (LEFT(LTRIM(name), 3) = '嘉年华')
    【重点】Like我就不多说了,先看Left函数:
    Left(要查询的列名,左起的前几个字符)='前几个字符为(二声)什么'
    再看Ltrim函数,这个简单了,去除某字段的左边的空格

    取两个集合中不相同的纪录

    select  distinct bookingno from booking where lastupdatedon >='2009-08-26'

    except
    select  distinct bookingno
    from bookingparty
    where bookingno in(
    select  distinct bookingno from booking where lastupdatedon >='2009-08-26'
    )




     

     

    HTML

  • 相关阅读:
    马哥教育N63013第十周作业
    马哥教育N63013第八周作业
    马哥教育N63013第十二周作业
    终于开通博客园的博客了
    Teradata 查看表的列名
    基础一 数据结构
    ubuntu 快速安装ninja和gn
    linux格式化文件命令
    ESP8266_RTOS_SDK更新子模块出错git remote: [sessionf0448081] 404 not found!
    springboot 自动配置原理
  • 原文地址:https://www.cnblogs.com/zlddtt/p/1504499.html
Copyright © 2020-2023  润新知