一个交叉查询有关问题
一个交叉查询问题
==table A============
ID
---------------
1
2
3
====================
==table B===========
ID
------------------
a
b
c
====================
想得到的结果
=============
1,a
1,b
1,c
2,a
2,b
2,c
3,a
3,b
3,c
=========================
有什么好办法没有?
------解决方案--------------------
select
a.id,
b.id
from a,b
order by a.ID asc,b.ID asc
select
a.id,
b.id
from a cross join b
order by a.ID asc,b.ID asc
------解决方案--------------------
select a.id, b.id
from a, b
order by a.id, b.id
------解决方案--------------------
同意楼上观点,用不加条件的连接再加上order排序输出即可
------解决方案--------------------
==table A============
ID
---------------
1
2
3
====================
==table B===========
ID
------------------
a
b
c
====================
想得到的结果
=============
1,a
1,b
1,c
2,a
2,b
2,c
3,a
3,b
3,c
=========================
有什么好办法没有?
------解决方案--------------------
select
a.id,
b.id
from a,b
order by a.ID asc,b.ID asc
select
a.id,
b.id
from a cross join b
order by a.ID asc,b.ID asc
------解决方案--------------------
select a.id, b.id
from a, b
order by a.id, b.id
------解决方案--------------------
同意楼上观点,用不加条件的连接再加上order排序输出即可
------解决方案--------------------
- SQL code
create table A(id varchar(10)) insert into A values('1') insert into A values('2') insert into A values('3') create table B(id varchar(10)) insert into B values('a') insert into B values('b') insert into B values('c') go select a.id + ',' + b.id 'col' from a cross join b order by col drop table A,B /* col --------------------- 1,a 1,b 1,c 2,a 2,b 2,c 3,a 3,b 3,c (所影响的行数为 9 行) */
------解决方案--------------------
- SQL code
--如果A的ID为INT型,转化一下. create table A(id int) insert into A values(1) insert into A values(2) insert into A values(3) create table B(id varchar(10)) insert into B values('a') insert into B values('b') insert into B values('c') go select cast(a.id as varchar) + ',' + b.id 'col' from a cross join b order by col drop table A,B /* col --------------------- 1,a 1,b 1,c 2,a 2,b 2,c 3,a 3,b 3,c (所影响的行数为 9 行) */
------解决方案--------------------
cross join
没错 同意
------解决方案--------------------
想得到的结果是:
tableA “乘以” tableB
即笛卡积,是Codd对于关系数据库给出的8个关系操作之一。
SQL实现:cross join
- SQL code
select * from tableA cross join tableB
------解决方案--------------------
select A.id,B.ID from Table A full join TableB B on 1=1