一个交叉查询问题
==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排序输出即可
[解决办法]
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') goselect a.id + ',' + b.id 'col' from a cross join b order by coldrop table A,B/*col --------------------- 1,a1,b1,c2,a2,b2,c3,a3,b3,c(所影响的行数为 9 行)*/
[解决办法]
--如果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') goselect cast(a.id as varchar) + ',' + b.id 'col' from a cross join b order by coldrop table A,B/*col --------------------- 1,a1,b1,c2,a2,b2,c3,a3,b3,c(所影响的行数为 9 行)*/
[解决办法]
cross join
没错 同意
[解决办法]
想得到的结果是:
tableA “乘以” tableB
即笛卡积,是Codd对于关系数据库给出的8个关系操作之一。
SQL实现:cross join
select * from tableA cross join tableB
[解决办法]
select A.id,B.ID from Table A full join TableB B on 1=1