然后 select C.userid,C.typeid,B.name from C left join B on C.typeid=B.typeid
--不用函数也可以做的 declare @t1 table(id int,userid varchar(10),typeid varchar(50)) declare @t2 table(typeid varchar(10),name varchar(20)) insert into @t1 select 1,'01','01,02,03,' union all select 2,'02','02,04,' insert into @t2 select'01','老虎' union all select '02','狮子' union all select '03','大象' union all select '04','兔子' union all select '05','猴子' --要得到 --表C --userid typeid name --01 01 老虎 --01 02 狮子 --01 03 大象 --02 02 狮子 --02 04 兔子 select a.userid,b.typeid,b.name from @t1 a left join @t2 b on charindex(','+b.typeid+',',','+a.typeid+',')>0 order by a.userid,b.typeid/*结果 userid typeid name ---------- ---------- -------------------- 01 01 老虎 01 02 狮子 01 03 大象 02 02 狮子 02 04 兔子 */
---1、 Select A.userid, B.typeid, B.name From A Left Join B On Charindex(','+B.typeid+',',','+A.typeid+',')>0 Order By A.userid,B.typeid ---2、 Select A.userid, B.typeid, B.name From B Left Join A On Charindex(','+B.typeid+',',','+A.typeid+',')>0 Where A.userid Is Not Null Order By A.userid,B.typeid
---创建测试环境 Create Table A(id int,userid varchar(10),typeid varchar(10)) Insert A Select 1, '01', '01,02,03,' Union All Select 2, '02', '02,04,' Go Create Table B(typeid varchar(10),name varchar(10)) Insert B Select '01', '老虎' Union All Select '02', '狮子' Union All Select '03', '大象' Union All Select '04', '兔子' Union All Select '05', '猴子' Go ---查询结果 Select A.userid, B.typeid, B.name From A Left Join B On Charindex(','+B.typeid+',',','+A.typeid+',')>0 Order By A.userid,B.typeid---清除测试环境 Drop Table A,B ---结果 /* userid typeid name ---------- ---------- ---------- 01 01 老虎 01 02 狮子 01 03 大象 02 02 狮子 02 04 兔子(所影响的行数为 5 行) */
declare @t1 table(id int,userid varchar(10),typeid varchar(50))
declare @t2 table(typeid varchar(10),name varchar(20))
insert into @t1
select 1,'01','01,02,03,'
union all select 2,'02','02,04,'
insert into @t2
select'01','老虎'
union all select '02','狮子'
union all select '03','大象'
union all select '04','兔子'
union all select '05','猴子'
--要得到
--表C
--userid typeid name
--01 01 老虎
--01 02 狮子
--01 03 大象
--02 02 狮子
--02 04 兔子
select a.userid,b.typeid,b.name
from @t1 a left join @t2 b on charindex(','+b.typeid+',',','+a.typeid+',')>0
order by a.userid,b.typeid/*结果
userid typeid name
---------- ---------- --------------------
01 01 老虎
01 02 狮子
01 03 大象
02 02 狮子
02 04 兔子
*/
Select
A.userid,
B.typeid,
B.name
From
A
Left Join B
On
Charindex(','+B.typeid+',',','+A.typeid+',')>0
Order By A.userid,B.typeid
---2、
Select
A.userid,
B.typeid,
B.name
From
B
Left Join A
On
Charindex(','+B.typeid+',',','+A.typeid+',')>0
Where
A.userid Is Not Null
Order By
A.userid,B.typeid
Create Table A(id int,userid varchar(10),typeid varchar(10))
Insert A Select 1, '01', '01,02,03,'
Union All Select 2, '02', '02,04,'
Go
Create Table B(typeid varchar(10),name varchar(10))
Insert B Select '01', '老虎'
Union All Select '02', '狮子'
Union All Select '03', '大象'
Union All Select '04', '兔子'
Union All Select '05', '猴子'
Go
---查询结果
Select
A.userid,
B.typeid,
B.name
From
A
Left Join B
On
Charindex(','+B.typeid+',',','+A.typeid+',')>0
Order By A.userid,B.typeid---清除测试环境
Drop Table A,B
---结果
/*
userid typeid name
---------- ---------- ----------
01 01 老虎
01 02 狮子
01 03 大象
02 02 狮子
02 04 兔子(所影响的行数为 5 行)
*/