不神奇
2018-07-11 06:58
采纳率: 50%
浏览 1.9k

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

谢谢

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • aquriushu 2018-07-11 07:05

    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

    评论
    解决 无用
    打赏 举报
  • 苏格La 2018-07-11 07:05

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

    评论
    解决 无用
    打赏 举报
  • SunnyGB 2018-07-11 07:06

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

    评论
    解决 无用
    打赏 举报
  • 24k君临 2018-07-11 07:13

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

    评论
    解决 无用
    打赏 举报
  • wv_feng 2018-07-11 07:17
     SELECT (@i:=@i+1) as `编号`,`用户表A`.`姓名`,GROUP_CONCAT(`用户图片表B`.`图片名`) as `图片名` FROM `用户表A`,(SELECT @i:=0) LEFT JOIN `用户图片表B` ON `用户表A`.`用户编号` = `用户表B`.`用户编号`
    
    评论
    解决 无用
    打赏 举报
  • qq_40588916 2018-07-11 07:19

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

    评论
    解决 无用
    打赏 举报
  • 北极冰雨 2018-07-11 07:27

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

    评论
    解决 无用
    打赏 举报
  • 诚哥丿 2018-07-11 07:28

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

    评论
    解决 无用
    打赏 举报
  • amber321000 2018-07-11 07:32

    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 ;

    评论
    解决 无用
    打赏 举报
  • 处女座程序员 2018-07-11 07:45

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

    评论
    解决 无用
    打赏 举报
  • Select * from A ,B where A . number = B.number and A.number = 1

    评论
    解决 无用
    打赏 举报
  • alens1216 2018-07-11 09:03

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

    评论
    解决 无用
    打赏 举报
  • bigbigbee 2018-07-11 09:49

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

    评论
    解决 无用
    打赏 举报
  • u011084420 2018-07-12 01:38

    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

    评论
    解决 无用
    打赏 举报
  • qq_40847497 2018-07-13 03:30

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题