读书人

无关联不同结构的表如何查询

发布时间: 2013-12-28 22:19:34 作者: rapoo

无关联不同结构的表怎么查询?
表A 表B
字段: regname dept
值: A1 B1
A2 B2


2个表无关联结构也不同

查询后 结果为:

regname dept
A1 B1
A1 B2
A2 B1
A2 B2


求大神赐教
[解决办法]

----------------------------------------------------------------
-- Author :DBA_Huangzj()
-- Date :2013-12-25 17:18:55
-- Version:
-- Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
--Dec 28 2012 20:23:12
--Copyright (c) Microsoft Corporation
--Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[A]
if object_id('[A]') is not null drop table [A]
go
create table [A]([regname] varchar(2))
insert [A]
select 'A1' union all
select 'A2'
if object_id('[B]') is not null drop table [B]
go
create table [B]([dept] varchar(2))
insert [B]
select 'B1' union all
select 'B2'
--------------开始查询--------------------------

select *
from a cross join b
ORDER BY regname
----------------结果----------------------------
/*
regname dept
------- ----
A1 B1
A1 B2
A2 B1
A2 B2
*/

[解决办法]
楼主,如果两张表的数据量很多的话,会要你数据库的命的。如果仅仅测试用的话,可以下面
create table #A (
Aname varchar(50)
)
insert #A
select 'A1' union
select 'A2'

create table #B(
Bdepart varchar(50)
)
insert #B
select 'B1' union
select 'B2'

select *
from #A , #B
ORDER BY Aname



结果
A1B1
A1B2
A2B1
A2B2
[解决办法]
这个写法很多,上面也都是对的:
create table #A (
Aname varchar(50)
)
insert #A
select 'A1' union
select 'A2'

create table #B(
Bdepart varchar(50)
)
insert #B
select 'B1' union
select 'B2'

select *
from #A
inner join #B
on 1=1
ORDER BY Aname
/*
AnameBdepart
A1B1
A1B2
A2B1
A2B2
*/

读书人网 >SQL Server

热点推荐