时间:2021-07-01 10:21:17 帮助过:4人阅读
--右表
SELECT [DB_ID],[DB_CODE],[DB_PORT]FROM [DuanJu].[dbo].[JZ_DIANBIAO] where JZ_ID=2294 and DB_PORT=5041
左关联:
右关联:
3,查询不同类型的最新一条数据。
下面是一张数据表格,记录了,不同JZ_ID的多条记录,我们要想办法查找不同JZ_ID下的最新一条记录。
--其实方法有很多种,我们这里只说一种就行了。
--首先我们得到JZ_ID,记住是去重后的JZ_ID,因为在一张表里同一个JZ_ID对应多条数据。然后就是得到每一个JZ_ID最新一条数据的具体时间
select JZ_ID ,MAX(UpdateTime) UpdateTime from [DuanJu].[dbo].[JZ_POWER_DAYHIS] group by JZ_ID
--然后根据该查询结果和原表利用JZ_ID和最新更新时间进行关联,就得到我们想要的结果了。
select a.* from [DuanJu].[dbo].[JZ_POWER_DAYHIS] a, ( select JZ_ID ,MAX(UpdateTime) UpdateTime from [DuanJu].[dbo].[JZ_POWER_DAYHIS] group by JZ_ID) b where a.JZ_ID=b.JZ_ID and a.UpdateTime=b.UpdateTime
注意:如果要查询最新一条记录,其实不必查询整张表的,如果这张表的数据量很大,几千万条,或者上亿条,那你查询整张表,是非常耗时的。所以一般要求不是太苛刻的话,我建议你最好多加个条件,比如
大于某个时间,三天内的,或者一天内的。当然这个要根据实际情况来。
4,从多张表中获取不同列参数,合并一起作为查询输出表。
从三张表中分别获取一列,组合在一起输出:
方法1:
select a.JZ_NAME,b.DB_CODE,SBD_NAME from [DuanJu].[dbo].[JZ_JIZHAN] a,[DuanJu].[dbo].[JZ_DIANBIAO] b ,[DuanJu].[dbo].[JZ_SheBeiDetail] c
where a.JZ_ID=b.JZ_ID and b.JZ_ID=c.JZ_ID and b.DB_ID=c.DB_ID
方法二:
SELECT (select JZ_NAME from [DuanJu].[dbo].[JZ_JIZHAN] where JZ_ID=a.JZ_ID) JZ_NAME ,(select DB_CODE from [DuanJu].[dbo].[JZ_DIANBIAO] where JZ_ID=a.JZ_ID and DB_ID=a.DB_ID) DB_CODE ,a.[SBD_NAME] FROM [DuanJu].[dbo].[JZ_SheBeiDetail] a
6,将一对多条记录的,作为一个字符串输出。
如下图将同一个jz_ID对应的不同DB_CODE拼接成字符串,作为一行输出。
SELECT Name = STUFF((SELECT ‘,‘+a.DB_CODE FROM [DuanJu].[dbo].[JZ_DIANBIAO] a where a.JZ_ID=2292 FOR XML PATH(‘‘),TYPE).value(‘.‘,‘NVARCHAR(MAX)‘),1,1,‘‘)
7,将查询结果拼接成json字符串的格式输出。
select ‘{"SBD_ID":‘+cast(a.SBD_ID as varchar)+‘,"SBD_NAME":"‘+a.SBD_NAME+‘","datas":[‘+ (SELECT Name=STUFF((SELECT ‘,‘+‘{"P_NUM":‘+ cast(P_NUM as varchar)+‘,"AddDate":"‘+cast(AddHour as varchar)+‘"}‘ FROM Power_SBHour where SBD_ID=a.SBD_ID and convert(char(10),AddTime,120)=‘2020-01-10‘ order by AddTime asc FOR XML PATH(‘‘),TYPE).value(‘.‘,‘NVARCHAR(MAX)‘),1,1,‘‘)) +‘]}‘ as strJson from JZ_SheBeiDetail a where a.JZ_ID=2292
其实在实际开发中遇到的查询远不止这些,只能具体情况具体对待,有的时候一个算法所写的sql代码可能和后台代码一样长,还需要注意的是在保证你所需的查询结果后,还有保证查询的效率,如果查询一个结果需要十几秒或者更长,那就不好了,毕竟对用户体验不好,所以在你能需要学习一些sql代码优化的知识了,比如索引。。。等。
Sqlserver 增删该查----查
标签:遇到 ref 代码优化 ast alt 图片 更新 dia src