利用sql2005的新特性实现根据子表条件得到的主表键且按其排序取出对应主表记录的方法
2006-12-30 11:40
555 查看
假如有两个关联表,是一对多关系的主子表。如下:
主表
CREATE TABLE [dbo].[CourseT](
[CourseID] [int] IDENTITY(1,1) NOT NULL,
[CourseName] [nchar](10) COLLATE Chinese_PRC_CI_AS_WS NULL
) ON [PRIMARY]
字表
CREATE TABLE [dbo].[Broad](
[BroadID] [int] IDENTITY(1,1) NOT NULL,
[CourseID] [int] NULL,
[BroadName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS_WS NULL
) ON [PRIMARY]
如果我们想查询Broad表中记录对应的CourseT表中的记录,且按CourseID的降序只取一次,在SQL2005中SQL如下
with temp as
(
select distinct courseid from Broad
),
temp2 as
(
select courseid , ROW_NUMBER() OVER(ORDER BY courseid desc) AS row_num
from temp
)
select CourseT.* from CourseT, temp2 where courset.courseid=temp2.courseid order by row_num
主表
CREATE TABLE [dbo].[CourseT](
[CourseID] [int] IDENTITY(1,1) NOT NULL,
[CourseName] [nchar](10) COLLATE Chinese_PRC_CI_AS_WS NULL
) ON [PRIMARY]
字表
CREATE TABLE [dbo].[Broad](
[BroadID] [int] IDENTITY(1,1) NOT NULL,
[CourseID] [int] NULL,
[BroadName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS_WS NULL
) ON [PRIMARY]
如果我们想查询Broad表中记录对应的CourseT表中的记录,且按CourseID的降序只取一次,在SQL2005中SQL如下
with temp as
(
select distinct courseid from Broad
),
temp2 as
(
select courseid , ROW_NUMBER() OVER(ORDER BY courseid desc) AS row_num
from temp
)
select CourseT.* from CourseT, temp2 where courset.courseid=temp2.courseid order by row_num
相关文章推荐
- 利用sql2005的新特性实现根据子表条件得到的主表键且按其排序取出对应主子表记录的方法
- 利用Objective-C的反射机制和运行时特性实现类静态方法的动态访问(二)
- 利用jdk1.8的新特性实现模板方法模式
- EF利用重写SaveChanges()方法实现 审计日志记录
- List<T>泛型数组API自带的Sort() 排序方法根据自定义排序实现
- 记录《编程珠玑》中通过位开关来实现排序的方法
- java实现给出分数数组得到对应名次数组的方法
- 基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)
- asp中利用数组实现数据库记录的批量录入方法
- 利用SQL2005新特性实现分页
- 利用VS根据文件目录结构创建C++工程自己简单实现的方法
- Mysql 实现 Rownum() 排序后根据条件获取名次
- Mysql 按条件排序查询一条记录 top 1 对应Mysql的LIMIT 关键字
- asp中利用数组实现数据库记录的批量录入方法
- 基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)
- 利用Objective-C的反射机制和运行时特性实现类静态方法的动态访问(一)
- 在oracle里面,如果有100条记录,排序后取出 第 10 行 到 第 20 行,用什么方法比较好?
- PHP查询数据库中满足条件的记录条数(两种实现方法)
- js利用appendChild对<li>标签进行排序的实现方法
- python实现根据月份和日期得到星座的方法