SQL-Server多表关联查询并分页
一、多表关联查询
1,left join
RelaTimeLog表 和 ValidFlight表关联查询
select t.FlightId,t.Calsign,t.DepAddrName,t.ArrAddrName,t.Etd FROM [CDM].[dbo].[ValidFlight] t left join [CDM].[dbo].[RelaTimeLog] f on t.FlightId = f.FlightId where f.[Type] = order by t.FlightId desc
2,与group by连用
select t.FlightId,t.Calsign,t.DepAddrName,t.ArrAddrName,t.Etd FROM [CDM].[dbo].[ValidFlight] t where FlightId in (select FlightId from [CDM].[dbo].[RelaTimeLog] where [Type] = group by FlightId) order by t.FlightId desc
二、分页
1,查询0到10条
select t.FlightId,t.Calsign,t.DepAddrName,t.ArrAddrName,t.Etd from (select *,ROW_NUMBER() over (order by FlightId Desc) as rowNumber FROM [CDM].[dbo].[ValidFlight]
where FlightId in (select FlightId from [CDM].[dbo].[RelaTimeLog] where [Type] = group by FlightId))t where rowNumber between and order by t.Etd desc
2,BETWEEN * AND * , Row_Number() OVER(ORDER BY *) AS rowNum
select t.FlightId,t.Calsign,t.DepAddrName,t.ArrAddrName,t.Etd,ROW_NUMBER() over (order by FlightId Desc) as rowNumber into #a FROM [CDM].[dbo].[ValidFlight] t
where FlightId in (select FlightId from [CDM].[dbo].[RelaTimeLog] where [Type] = group by FlightId) order by t.FlightId desc
select * from #a where rowNumber between and
select COUNT(*) as totalCount from #a
drop Table #a
3,以 BETWEEN * AND * , Row_Number() OVER(ORDER BY *) AS rowNum为例的分页存储过程
USE [CDM]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[p_GetModifyTOBTFlight]
@PageIndex int,
@PageSize int,
@calsign nvarchar(),
@Recount int output
AS
BEGIN if @calsign<>''
BEGIN
select CONVERT(int,t.FlightId) as FlightId,t.Calsign,t.DepAddrName,t.ArrAddrName,t.Etd, ROW_NUMBER() over (order by Etd Desc) as rowNumber into #a FROM [CDM].[dbo].[ValidFlight] t
where FlightId in (select FlightId from [CDM].[dbo].[RelaTimeLog] where [Type] = and Calsign like '%'+@calsign+'%' group by FlightId)
select * from #a where rowNumber between @PageSize*((@PageIndex)-) and @PageSize*@PageIndex
set @Recount = (select COUNT(*) from #a)
drop Table #a
END
else
BEGINselect CONVERT(int,t.FlightId) as FlightId,t.Calsign,t.DepAddrName,t.ArrAddrName,t.Etd,t.Atd,t.Ata, t.Eta,ROW_NUMBER() over (order by etd Desc) as rowNumber into #b FROM [CDM].[dbo].[ValidFlight] t
where FlightId in (select FlightId from [CDM].[dbo].[RelaTimeLog] where [Type] = group by FlightId)
if@pageIndex >1
begin
select * from #b where rowNumber between (@PageSize*((@PageIndex)-1)+1) and @PageSize*@PageIndex
end
else
begin
select * from #b where rowNumber between @PageSize*((@PageIndex)-1) and @PageSize*@PageIndex
end set @Recount = (select COUNT(*) from #b)
print @Recount
drop Table #b
END
END
4,拼接SQL语句
USE [CDM]
GO
/****** Object: StoredProcedure [dbo].[p_GetHistoryFlight] Script Date: 2018/12/29 14:32:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[p_GetHistoryFlight]
@PageIndex int,
@PageSize int,
@GsName nvarchar(),
@StartTime datetime,
@EndTime datetime,
@DepAddr nvarchar(),
@ArrAddr nvarchar(),
@TimeDiff int,
@Recount int output
AS
BEGIN
declare @sql nvarchar()
declare @countSql nvarchar()
declare @where nvarchar() =' WHERE 1=1 '
declare @cols nvarchar() =' Id,CONVERT(INT,FlightId) AS FlightId,Calsign,FlyTypeName,GsName,AcfTypeName,Stand,Etd,CTOT,Atd,Eta,Ata,TOBT,ApplicateTime,DepAddrName,ArrAddrName,1 AS TimeDiff ' declare @sort nvarchar() =' ORDER BY Etd desc'
if @StartTime IS NOT NULL
BEGIN
set @where=@where+' AND Etd>='''+CONVERT(nvarchar,@StartTime)+''''
END
if @EndTime IS NOT NULL
BEGIN
set @where=@where+' AND Etd<='''+CONVERT(nvarchar,@EndTime)+''''
END
if @DepAddr<>''
BEGIN
SET @where=@where + ' AND DepAddrName LIKE ''%'+@DepAddr+'%'''
END
if @DepAddr<>''
BEGIN
SET @where=@where + ' AND ArrAddrName LIKE ''%'+@ArrAddr+'%'''
END
print(@where)
if @GsName<>''
BEGIN
set @where=@where+' AND GsName LIKE ''%'+@GsName+'%'''
END
set @sql=N'SELECT TOP '+STR(@PageSize) +' * FROM ( SELECT ROW_NUMBER() OVER(ORDER BY Id desc) as rowid, ' + @cols +' FROM [CDM].[dbo].[ValidFlightHistory] ' +@where +') AS A WHERE rowid>'+STR(@PageSize*((@PageIndex)-))
print @sql
exec(@sql) set @countSql=N'SELECT @total=count(*) FROM [CDM].[dbo].[ValidFlightHistory] '+@where
print @countSql exec sp_executesql @countSql,N'@total int out',@total=@Recount out
END
SQL-Server多表关联查询并分页的更多相关文章
- SQL Server 锁表、查询被锁表、解锁相关语句
SQL Server 锁表.查询被锁表.解锁相关语句,供参考. --锁表(其它事务不能读.更新.删除) BEGIN TRAN SELECT * FROM <表名> WITH(TABLOCK ...
- sql server多表关联update
一般都是写的单表update语句,很少写多表关联的update,但是事实上,在SQL Server中,update的多表连接更新和select的多表连接查询在使用的方法上其实并没有多大区别. 直接上一 ...
- SQL Server多表同时查询
今天在练sql server发现多条语句同时使用可以多表同时查询,具体操作如下: 代码示例: USE teachingGOSELECT *FROM dbo.teach_classORDER BY cl ...
- sql server锁表、查询被锁表、解锁被锁表的相关语句
MSSQL(SQL Server)在我的印象中很容易锁表,大致原因就是你在一个窗口中执行的DML语句没有提交,然后又打开了一个窗口对相同的表进行CRUD操作,这样就会导致锁表.锁表是一种保持数据一致性 ...
- SQL server多表联合查询
参考网址: https://blog.csdn.net/zou15093087438/article/details/79226394 1. 外连接可分为:左连接.右连接.完全外连接. a. 左连接 ...
- sql server 多表关联更新 update
update a set a.KSMC = b.name from JC_KSXXB a inner join chisdb_ymyy..zd_unit_code b on a.KSDM = b.co ...
- sql语句 两表关联查询计算数量
select sum(a1.`num`) from `order_orderlistrow` as a1 INNER JOIN `order_orderlist` as a2 on a1.`ord ...
- 【SQL】在SQL Server中多表关联查询问题
好久没有写SQL语句的多表连接查询,总在用框架进行持久化操作.今天写了一个多表关联查询,想根据两个字段唯一确定一条数据 失败的案例如下: SELECT cyb.id,ad.name FROM [Gen ...
- RDIFramework.NET 中多表关联查询分页实例
RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为 ...
随机推荐
- Kali Linux渗透测试实战 2.2 操作系统指纹识别
目录 2.2 操作系统指纹识别 2.2.1 Banner抓取 2.2.2 TCP 和 ICMP 常规指纹识别技术 TCP数据报格式 ICMP首部格式 TTL与TCP窗口大小 FIN探测 BOGUS f ...
- 为什么在UDP包中不能获取发包方的地址
首先,我们要先了解一下UDP包的结构. 图1 UDP报文格式 从图1,我们可以看出,从UDP包中,我们可以获取的信息只有源端口和目的地端口.我们不能获取到源IP因为报文中没有源IP.真正包含IP地址的 ...
- ElectronNetTest
系统环境:Ubuntu 18.04.2 Desktop 软件环境:asp.net core 2.2,Node.js(version>8.6) Github上有人说不支持 asp.net core ...
- CefSharp 支持mp4
效果图: 下载链接:创建wpf项目引用 如下:链接:链接: https://pan.baidu.com/s/1UCJmslLPSDph7VrYhXM9gw 密码: j3n4 链接: https://p ...
- 利用App漏洞获利2800多万元,企业该如何避免类似事件?
上个月,上海警方抓捕了一个利用网上银行漏洞非法获利的犯罪团伙,该团伙利用银行App漏洞非法获利2800多万元. 据悉,该团伙使用技术软件成倍放大定期存单金额,从而非法获利.理财邦的一篇文章分析了犯罪嫌 ...
- Linux巩固记录(9) keepalived+nginx搭建高可用负载分发环境
环境准备(继续服用hadoop节点) slave1 192.168.2.201(CentOs 7) slave2 192.168.2.202(CentOs 7) slave1 和 slave2 上 ...
- 【Spark算子】:reduceByKey、groupByKey和combineByKey
在spark中,reduceByKey.groupByKey和combineByKey这三种算子用的较多,结合使用过程中的体会简单总结: 我的代码实践:https://github.com/wwcom ...
- hybird app混合开发介绍
一 概念 1 Hybird App,是用现有前端(html,js,css)技术来开发的app.特点:1 灵活(开发灵活 ,部署灵活) 2 拥有类似原生的性能体验. 2 不是h5页面,也不是在webvi ...
- Postman入门
- Hadoop(三)搭建Hadoop全分布式集群
原文地址:http://www.cnblogs.com/zhangyinhua/p/7652686.html 阅读目录(Content) 一.搭建Hadoop全分布式集群前提 1.1.网络 1.2.安 ...