SQL连接两个表
有两个表A和B.
表A字段
id 名称 产品
1 AA A1
2 AAA A2
3 AAAA A3
表B字段
id 名称 产品
1 BB A1
2 BBB A2
3 BBBB A3
现在读取出A表的第一个记录:
名称 对应 产品
AA ---- A1
现在要的效果是由A表的A1,对应于B表的产品A1,然后读取出B表的名称BB。
就是两个表中关联的问题,请问sql语句该如何写?
------解决方案--------------------create table A(id int, 名称 varchar(20), 产品 varchar(20))
go
create table B(id int, 名称 varchar(20), 产品 varchar(20))
go
--
insert into A select 1, 'AA ', 'A1 '
union select 2, 'AAA ', 'A2 '
union select 3, 'AAAA ', 'A3 '
go
insert into B select 1, 'BB ', 'A1 '
union select 2, 'BBB ', 'A2 '
union select 3, 'BBBB ', 'A3 '
--
select *,(select top 1 B.名称 from b where b.产品=产品) 名称b from A
drop table A
drop table B
------------------
id 名称 产品 名称b
---------------
1 AA A1 BB
2 AAA A2 BB
3 AAAA A3 BB
-----------------
(3 行受影响)
------解决方案--------------------select top 1 A.名称,B.名称 from A,B where A.产品 = B.产品 order by A.id
如果B表中没有相应的记录,A表中的名称也要表示的话:
select top 1 A.名称, B.名称 from A, B where A.产品 *= B.产品 order by A.id
------解决方案--------------------SELECT A.名称,C.名称
FROM A LEFT OUTER JOIN
(SELECT MIN(名称) 名称,产品 FROM B GROUP BY 产品 ) C ON A.产品= C.产品
ORDER BY A.ID DESC
这样应该可以,如果名称和产品一一对应,还能
SELECT A.名称,C.名称
FROM A LEFT OUTER JOIN
(SELECT DISTINCT 名称,产品 FROM B ) C ON A.产品= C.产品
ORDER BY A.ID DESC