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

谢谢

sql

16个回答

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

你得先说你用的什么数据库,如果是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 ;

weixin_35807139
amber321000 这个完全可以选出你要的结果,上面两个是oracle版,后面是mysql版本
大约一年之前 回复

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

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

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 ;

共16条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!