sql查询语句sql联合查询

用户表A:
用户编号 姓名 地址
1 王五 北京
2 张三 上海

用户图片表B:
用户编号 图片名
1 a.jpg
1 b.jpg
2 22.jpg
2 23.jpg
2 24.png

能不能用一条查询语句获取出两个表的数据如:
1 王五 北京 a.jp,b.jpg
2 张三 上海 22.jpg,23.jpg,24.png

谢谢

CREATE TABLE User (
ID int(11) unsigned NOT NULL AUTO_INCREMENT,
Name varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
Address varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
PRIMARY KEY (ID)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE UserPicture (
ID int(11) unsigned NOT NULL AUTO_INCREMENT,
UserID int(11) unsigned NOT NULL DEFAULT '1',
PictureUrl varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
PRIMARY KEY (ID)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

SELECT
User.Name,
User.Address,
GROUP_CONCAT(UserPicture.PictureUrl)
FROM
User
JOIN UserPicture ON UserPicture.UserID = User.ID
GROUP BY
UserPicture.UserID

select * from A a left join (select * from B ) b on b.id=a.id
这样可以查出来 ,但显示不是你那样显示的。会像这样
1 王五 北京 a.jpg
2 王五 北京 b.jpg
3 张三 上海 22.jpg
4 张三 上海 23.jpg
5 张三 上海 24.png

Select * from tab_a ,tab_b where tab_a . number = tab_b.number and tab_a.number = 1

select a.用户编号 a.姓名 a.地址 b.图片名 from a left join b on a.用户编号 = b.用户编号

select r.用户编号,r.姓名,r.地址,p.图片名 from A r inner join B p on r.用户编号 = p.用户编号 where r.用户编号='1'

 SELECT (@i:=@i+1) as `编号`,`用户表A`.`姓名`,GROUP_CONCAT(`用户图片表B`.`图片名`) as `图片名` FROM `用户表A`,(SELECT @i:=0) LEFT JOIN `用户图片表B` ON `用户表A`.`用户编号` = `用户表B`.`用户编号`

select*from tab_a,tab_bwhere tab_a.usernumber=tab_b.number

select a.用户编号, a.姓名,a.地址,(select to_char(vm_concat(b.图片名)) from B b where a.用户编号 = b.用户编号) from A a

你得先说你用的什么数据库,如果是mysql的话那比较简易,用 group_concat 函数就行,细节自行百度一下。

oracle : select a.用户编号 userNo, a.姓名 userName, a.地址 userAddress, wm_concat(b.图片名) pics from A a,B b where a.userNo=b.userNo ;

oracle11g : select a.用户编号 userNo, a.姓名 userName, a.地址 userAddress, listagg(b.图片名, ',') within group( order by b.图片名) pics from A a,B b where a.userNo=b.userNo ;

mysql : select a.用户编号 userNo, a.姓名 userName, a.地址 userAddress, GROUP_CONCAT(DISTINCT(b.图片名)) pics from A a,B b where a.userNo=b.userNo ;

select * from 用户表A a
left join 用户表B b
on a.用户编号=b.用户编号

Select * from A ,B where A . number = B.number and A.number = 1

select a.用户编号 userNo, a.姓名 userName, a.地址 userAddress, GROUP_CONCAT(DISTINCT(b.图片名)) pics from A a,B b where a.userNo=b.userNo ;

select * from 用户表A a
left join 用户表B b
on a.用户编号=b.用户编号

select a.用户名,a.地址,b3.图片名称拼接 from 表A a
left join
(
select B表用户ID,STUFF((select ','+图片名称 from B表 b1 where b1.用户ID=b2.用户ID FOR XML PATH('') ) ,1, 1, '') AS 图片名称拼接 from B表 b2
)b3
on a.用户ID=b3.用户ID

SELECT studentName,r.studentResult(查询内容) FROM student(表) s(重取的表名) INNER JOIN result(另一个表) r(重取的表名)