sql 几个功能

本文深入探讨了SQL中的类型转换、日期差计算、按时间顺序查询、存在性判断、字符串分割和条件选择等核心技巧,通过具体实例展示了如何高效地解决实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 类型转换

 

    convert( 类型,值或字段)

 

    如:update Merop_Menu Set M_ShtmlPath='/Html/Menu/'+ convert( varchar,M_ID) ,M_ShtmlName = 'Index.html'

 

2. 日期差

 

    datediff( day/month/year, 值或字段 , 值或字段 )

 

---  getdate() 获得当前时间,

---  day 获得的是天数

---  month 获得的是月数

---  year 获得的是年数

 

3. 按时间顺序查询sql表中不重复记录

 

  按发布时间倒序查询Message表中不重复用户发布的最新10条信息

  SQL语句如下:

  select TOP 10 m.* from message m where not exists(select 1 from message where [User_ID]=m.[User_ID] and Regtime>M.Regtime) order by m.regtime desc

 

-- exists与后面的sql查询语句返回的是一个bool值,True进执行前面的查询,反之不查询。

 

 

利用exists及存储过程判断记录是否存在例子

CREATE PROCEDURE P_Visit
(
@Visit  varchar(20),
@State  int  output

AS
if  not exists  (Select * from [表]  Where [Visit]=@Visit)
set @State=1
else
set @State=2
GO
 

 

分割字符串的方法:

 

select substring( DwtBox_DwtPath,21,len(DwtBox_DwtPath)+1 ) From Merop_DwtBox

 

If Else的用法

if exists (select UserName From Merop_ReNote Where N_ID=*** )

    begin Select Top 1 (UserName+'  '+ Convert(Varchar(16),RN_Addtime,120)) From Merop_ReNote Where N_ID=*** Order by RN_Addtime Desc end

else

    begin select N_Addtime From Merop_Note Where N_ID=*** end

 

 

 

 

 


假设现在有如下N条记录 表明叫book
id author title
1 aaa AAA
2 bbb BBB
3 ccc CCC
4 ddd DDD
5 eee AAA
现在想从这5条记录中查询所有title不重复的记录
select distinct title,author from book这样是不可以的 因为distinct只能作用于一个字段
想请教应该怎么写


答案:
select a.* from book a right join (


select max(id) id from book group by title) b on b.id = a.id


where a.id is not null

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值