qq_26388655
qq_26388655
采纳率0%
2020-04-21 16:30

sql如何合并两张表

3
已结题




如图,A表、B表是两个记录表,希望用name字段汇总生成结果。(a表含全部的name,b表不一定)

例如,a表有3个a1的记录,b表有1个a1记录,那么结果就是3个a1记录,并且a表的a_time、a_count可填充3行,而b表由于只有1个a1记录,故b_seal、b_num只能填充1行,剩下2行用null填充。

  • 点赞
  • 收藏
  • 复制链接分享

13条回答

  • niaonao niaonao 1年前

    为什么只合并第一条记录(比如左表的a1 合并后两行null ,右表的b2,两行null);

    如果左侧e5 两个记录,右侧e5 三个记录,你要合并为几条记录?

    还是不会出现这种情况,如果是,为什么不会出现这种情况


    一般的逻辑是全连接查询

    返回结果数为,左表*右表,比如a1 有3*1=3条记录,b2有1*3=3条记录,e5有2*3=6条记录

    select a.user_name, a.mobile, a.`password`,b.num, b.seal from table_a a LEFT JOIN table_b b

    on a.user_name = b.user_name


    UNION


    select a.user_name, a.mobile, a.`password`,b.num, b.seal from table_b b LEFT JOIN table_a a

    on a.user_name = b.user_name


    点赞 评论 复制链接分享
  • qq_42818496 小码农吗 1年前

    循环找

    点赞 评论 复制链接分享
  • bosaidongmomo bosaidongmomo 1年前

    要不然你用两次left join 可能也能达到目的

    点赞 评论 复制链接分享
  • qq_26388655 qq_26388655 1年前

    A表好比是每天签到的考勤表,B表是每天工作的日志表,需求是想按name汇总起来看,不一一对应,比如张一的所有考勤和工作日志,全部被张一的name列包含

    点赞 评论 复制链接分享
  • bosaidongmomo bosaidongmomo 1年前

    反正你这个需求令我头大2333

    点赞 评论 复制链接分享
  • bosaidongmomo bosaidongmomo 1年前

    那我知道了。你得先去查一下。谁只有一条记录。

    点赞 评论 复制链接分享
  • qq_26388655 qq_26388655 1年前
    where a.name = a1 or c3,这。。。a1、b2、c3、d4是假设的人名,有上万个,不能写死
    
    点赞 评论 复制链接分享
  • skyseagrass skyseagrass 1年前

    bosaidongmomo,大神,昨天我的提问,就是下载文件那个,对您的代码我还有个问题,可以私信一下吗

    点赞 评论 复制链接分享
  • bosaidongmomo bosaidongmomo 1年前

    目前我只会这样做

    点赞 评论 复制链接分享
  • bosaidongmomo bosaidongmomo 1年前

    select * from a right join b on a.name = b.name where a.name = b2 or d4

    点赞 评论 复制链接分享
  • bosaidongmomo bosaidongmomo 1年前

    select * from a left join b on a.name = b.name where a.name = a1 or c3

    点赞 评论 复制链接分享
  • qq_26388655 qq_26388655 1年前

    请写出完整的sql语句,需要在数据库运行一下

    点赞 评论 复制链接分享
  • bosaidongmomo bosaidongmomo 1年前

    a1 是左外连接 b2 是右外连接

    点赞 评论 复制链接分享

为你推荐