网站建设资讯

NEWS

网站建设资讯

sqlserver笛卡尔,笛卡尔乘积的sql

SQLServer数据处理显示问题

如果还需要的话:

成都创新互联公司服务项目包括新乡县网站建设、新乡县网站制作、新乡县网页制作以及新乡县网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,新乡县网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到新乡县省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

select * from (select * from (select rownum rn,D.* from TableName T) where rn=1),

(select * from (select rownum rn,T.* from TableName T) where rn=2),

(select * from (select rownum rn,T.* from TableName T) where rn=3)

先看看我的例子,我这里有一个表:

如果我需要前三条显示成你提问中所说那样:

语句:

select * from (select * from (select rownum rn,D.* from departments D) where rn=1),

(select * from (select rownum rn,D.* from departments D) where rn=2),

(select * from (select rownum rn,D.* from departments D) where rn=3)

此处需要先给整个表一个行序号,然后用无条件查询,也就是笛卡尔查询,因为我这里查询的结果只有一条数据所以不会产生笛卡尔乘积

然后把行序号去掉用查询出来的结果就是你要的结果:

语句如下:

select * from (select DEPT_ID,DEPT_NAME,DEPT_LEADER,MONEY from (select rownum rn,D.* from departments D) where rn=1),

(select DEPT_ID,DEPT_NAME,DEPT_LEADER,MONEY from (select rownum rn,D.* from departments D) where rn=2),

(select DEPT_ID,DEPT_NAME,DEPT_LEADER,MONEY from (select rownum rn,D.* from departments D) where rn=3)

SQLSERVER的多表查询问题

属于多表链接

在两个表之间使用【,】进行的链接,默认是交叉链接,也就是会生笛卡尔积

sqlserver 的交叉连接和内部连接有什么区别吗?

假设有两张表,A表和B表,A表有m条记录,x个属性;B表有n条记录,y个属性

交叉连接(cross join):A表和B表交叉连接就是,A表中的每条记录都和B表的的记录进行连接。A表和B表交叉最后会得到一个表会有m×n条记录,属性会有x+y个。而且这种连接比较消耗资源。

内部连接: 它是交叉连接的一个变形,内部连接一般都会有一个连接条件,只有满足条件的连接才会被选中。如果内部连接没有设置合理的条件,那它和交叉连接是等价的。一般得到的表会是=m×n条记录,=x+y个属性。


文章标题:sqlserver笛卡尔,笛卡尔乘积的sql
链接分享:http://njwzjz.com/article/dsgjgdg.html