表A.字段1, 字段2..........., 名字 =表A的记录 (下面表B的记录是匹配本条记录的结果)
表B.字段1, 字段2..........., 名字 =表B.字段1 Like 表A.字段1% 的记录1
表B.字段1, 字段2..........., 名字 =表B.字段1 Like 表A.字段1% 的记录2
表B.字段1, 字段2..........., 名字 =表B.字段1 Like 表A.字段1% 的记录3
表B.字段1, 字段2..........., 名字 =表B.字段1 Like 表A.字段1% 的记录n
表A.字段1, 字段2..........., 名字 =表A的记录 (下面表B的记录是匹配本条记录的结果)
表B.字段1, 字段2..........., 名字 =表B.字段1 Like 表A.字段1% 的记录1
表B.字段1, 字段2..........., 名字 =表B.字段1 Like 表A.字段1% 的记录n
.
.
.
.
.
.
一直到 表A 的最后一条记录(如果中间的表A.字段1在表B.字段1中未找到匹配记录 则都不输出)表A.字段1 比 表B.字段1 的实际字符数要少,所以要 Where 表B.字段1 like 表A.字段1%
表B.字段1, 字段2..........., 名字 =表B.字段1 Like 表A.字段1% 的记录1
表B.字段1, 字段2..........., 名字 =表B.字段1 Like 表A.字段1% 的记录2
表B.字段1, 字段2..........., 名字 =表B.字段1 Like 表A.字段1% 的记录3
表B.字段1, 字段2..........., 名字 =表B.字段1 Like 表A.字段1% 的记录n
表A.字段1, 字段2..........., 名字 =表A的记录 (下面表B的记录是匹配本条记录的结果)
表B.字段1, 字段2..........., 名字 =表B.字段1 Like 表A.字段1% 的记录1
表B.字段1, 字段2..........., 名字 =表B.字段1 Like 表A.字段1% 的记录n
.
.
.
.
.
.
一直到 表A 的最后一条记录(如果中间的表A.字段1在表B.字段1中未找到匹配记录 则都不输出)表A.字段1 比 表B.字段1 的实际字符数要少,所以要 Where 表B.字段1 like 表A.字段1%
insert @ta select '1','a1'
insert @ta select '2','a2'
insert @ta select '3','a3'
declare @tb table(col1 varchar(10),col2 varchar(10))
insert @tb select '1','b1'
insert @tb select '1','b2'
insert @tb select '2','b3'
insert @tb select '2','b4'
insert @tb select '2','b5'
insert @tb select '3','b6'select * from @ta union all
select * from @tb
order by col1
col1 col2
---------- ----------
1 a1
1 b1
1 b2
2 b3
2 b4
2 b5
2 a2
3 a3
3 b6(所影响的行数为 9 行)
Create Table TEST1
(ID Int,
Name Varchar(10))Create Table TEST2
(ID Int,
Name Varchar(10))
GO
--插入數據
Insert TEST1 Select 1,'a'
Union All Select 2,'b'
Union All Select 3,'c'Insert TEST2 Select 1,'aaaa'
Union All Select 2,'aasdsa'
Union All Select 3,'adsac'
Union All Select 4,'bsac'
Union All Select 5,'bsac'
Union All Select 6,'dsac'
GO
--測試
Select * From
(Select A.*
From TEST1 A Inner Join TEST2 B On B.Name Like A.Name+'%'
Union
Select B.*
From TEST1 A Inner Join TEST2 B On B.Name Like A.Name+'%') C
Order By Name
GO
--刪除測試環境
Drop Table TEST1,TEST2
--結果
/*
ID Name
1 a --表A的记录
1 aaaa
2 aasdsa
3 adsac
2 b --表A的记录
4 bsac
5 bsac
*/
To paoluo(一天到晚游泳的鱼)因为数据量太大了,查询起来太慢。不知道我这样查结果和你的会不会一样,A的数据依据B内匹配到的数据重复显示,B内没匹配到A的不显示。Select A.AID,A.PartNo,B.BID,B.PartNo From A,B Where B.PartNo Like A.PartNo+'%' Order By A.PartNo,A.AID
B的数据=(上面A在B内匹配到的数据)
B的数据=(上面A在B内匹配到的数据)
B的数据=(上面A在B内匹配到的数据)
下一条
A的数据=(在B内拥有匹配的数据)
B的数据=(上面A在B内匹配到的数据)
B的数据=(上面A在B内匹配到的数据)
B的数据=(上面A在B内匹配到的数据)
下一条
.
.
.
最后一条
A的数据=(在B内拥有匹配的数据)
B的数据=(上面A在B内匹配到的数据)
B的数据=(上面A在B内匹配到的数据)
B的数据=(上面A在B内匹配到的数据)注:上面的结果中 如果 A在B内没有匹配数据则不需要返回。