两张表之间查询的sql语句

来源:百度知道 编辑:UC知道 时间:2024/07/07 18:58:01
表A:id,name;表B:id,name2,lid。A.id和B.lid关联。A中一条记录可能会对应多条B表记录。

是否可以通过sql语句输出name以及关联的所有name2。

输出:
name1 name1-1、name1-2;
name2 name2-1;

可以是可以, 不过比较麻烦了,如果是sql2000我就懒得说了,
2005可以使用CTE递归查询。

with o_t as (
select row_number() over(partition by a.name,order by b.name2) as rn,a.name as aname,b.name2 bname
FROM 表A a INNER JOIN 表B b ON a.id=b.lid ),
cte_t as
(select rn, aname, bname from o_t where rn=1
union all
select a.rn,b.aname,b.bname+'、'+a.bname
from o_t a,cte_t b
where a.aname=b.aname and a.rn=b.rn+1)
select aname,max(bname) bname from cte_t
group by aname

另外,如果确定name2的量不多的情况,你也可以使用数据旋转,行转列。

select a.id,b.id,a.name,b.name
FROM 表1 a,表2 b INNER JOIN ON a.id=b.id

要输出
name1 name1-1、name1-2;
name2 name2-1;

这种查询是很难达成的

只能这样查
name1 name1-1;
name1 name1-2;
name2 name2-1;

select a.name,b.name
FROM 表1 a INNER JOIN 表2 b ON a.id=b.lid