SQL 收集

本文介绍了SQL中的几个实用技巧,包括如何使用UNION操作符合并结果集,并解释了在需要排序时为何必须配合TOP使用;展示了DATE函数的不同用法,如添加天数、计算日期间隔等;还提供了一个关于如何进行表更新的示例,特别是如何通过INNER JOIN来更新一个表中的字段。

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

1.union

  CREATE TABLE dbo.#testTab 
 ( 
  Id int NOT NULL
 ) 
  insert into #testTab values(3);
 insert into #testTab values(4);
select * from #testTab union all
  select * from #testTab 

select * from #testTab union  
  select * from #testTab 

select * from (select * from #testTab order by Id) as t

select * from (select top 3 * from #testTab order by Id) as t union all
  select * from (select top 3 * from #testTab order by Id) as t

在使用union要排序的时候必须加top

 2.date

  select dateadd(day,2,'2004-10-15')              --2004-10-17  添加天数
  select datediff(day,'2004-09-01','2004-09-18')  --17          日期间隔
  select datepart(month,'2004-10-15')             --10          获取月份
  select datename(weekday,'2004-10-15')           --Friday      获取星期几
  select convert(varchar(10),getdate(),120)       --2013-11-29  获取日期
  select convert(varchar(8),getdate(),114)        --15:39:01    获取时间
  select datename(week,'2004-10-15')              --42          获取第几周

 3.update inner join

 update a
 SET a.ProvinceId=b.ProID
 from hkb_RequirementBook a
 join sys_T_City b
 on a.CitySubstationID=b.CityID

这个比较特殊,可以先用别名,再申明

定义格式:

-- 不使用别名
UPDATE
    tb_User 
SET 
    tb_User.pass = ''
FROM 
    tb_User usr
INNER JOIN 
    tb_Address addr 
ON 
    usr.nAddressFK = addr.nAddressID
WHERE
    usr.id=123

-- 使用别名
UPDATE 
    usr 
SET 
    usr.pass = ''
FROM 
    tb_User usr
INNER JOIN 
    tb_Address addr 
ON 
    usr.nAddressFK = addr.nAddressID
WHERE
    usr.id=123

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值