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://scyanting.com/article/dsgjgdg.html