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条)

报告相同问题?

悬赏问题

  • ¥15 wpf datagrid如何实现多层表头
  • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
  • ¥20 网站后台使用极速模式非常的卡
  • ¥20 Keil uVision5创建project没反应
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程