congqitong5039 2016-11-19 12:35 采纳率: 100%
浏览 1513
已采纳

mysql数据库字段拼接、分组等问题

首先,这是表A,名字为building_device_ms,如下图:
图片说明
然后表B,名字为ms_uploaddata,下图所示:图片说明

两张表之间,靠字段uid关联。现在我想用sql语句实现如下效果:根据表B的uid,如2290614309,找到对应的表A里的deviceid值,即3. 然后把表A中所有deviceid=3的uid的值拼接起来形成字段uids,这里即【2290614309、2290614311】,最后想要的结果如下:结果图,问题在于:要保证表B里有几条记录,最后sql语句出来的结果就有几条,我的sql语句:
(1)

 SELECT
    tmp.deviceid,
    tmp.uid,
    REPLACE(group_concat(a.uid),',','、') as uids
FROM building_device_ms a 
INNER JOIN 
    (SELECT  b.deviceid ,c.uid  FROM building_device_ms b 
    INNER JOIN ms_uploaddata c on b.uid = c.uid) tmp 
on tmp.deviceid = a.deviceid
GROUP BY a.deviceid 

分组时,由于deviceid都为3,给全部拼接了

图片说明

(2)

 SELECT DISTINCT
    tmp.deviceid,
    tmp.uid,
    REPLACE(group_concat(a.uid),',','、') as uids
FROM building_device_ms a 
INNER JOIN 
    (SELECT DISTINCT b.deviceid ,c.uid  FROM building_device_ms b 
    INNER JOIN ms_uploaddata c on b.uid = c.uid) tmp 
on tmp.deviceid = a.deviceid
GROUP BY a.deviceid 

图片说明

去重就保证不了记录数与表B一致。

综合起来——去重、分组保证不了记录数与表B一致,且分组会由于deviceid值相同,全部拼接了起来;不分组,uid拼接不起来,是不是我思路错了?希望有朋友耐心解决!~~万分感谢!

  • 写回答

2条回答 默认 最新

  • congqitong5039 2016-11-20 06:40
    关注

    自己帮顶下。。。。。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况