LZYTJX 2023-09-03 01:15 采纳率: 66.7%
浏览 2
已结题

mysql联查数据重复显示怎么办

请问一下,我这个5表联查的数据问题出现在哪,是要用子查询,先查id,再查整体数据吗,像测试2,测试5这种数据,处罚类型和违规类型为啥会重复一次啊

img

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-09-03 09:31
    关注

    引用 皆我百晓生 小程序回复内容作答:
    从你提供的SQL语句来看,问题出在以下部分:

    GROUP_CONCAT(pun.punid ORDER BY cp.punid SEPARATOR) AS punids,
    GROUP_CONCAT(pun.punname ORDER BY cp.punid SEPARATOR) AS punnames,
    GROUP_CONCAT(vio.vioid ORDER BY cv.vioid SEPARATOR) AS vioids,
    GROUP_CONCAT(vio.vioname ORDER BY cv.vioid SEPARATOR) AS vionames
    

    你在这里使用了GROUP_CONCAT函数来将punid、punname、vioid、vioname连接为一个字符串,但是你没有指定每个表之间的关联条件。所以可能会导致重复显示。

    解决办法是,在每个GROUP_CONCAT函数中使用DISTINCT关键字来去除重复值。修改后的代码如下:

    GROUP_CONCAT(DISTINCT pun.punid ORDER BY cp.punid SEPARATOR) AS punids,
    GROUP_CONCAT(DISTINCT pun.punname ORDER BY cp.punid SEPARATOR) AS punnames,
    GROUP_CONCAT(DISTINCT vio.vioid ORDER BY cv.vioid SEPARATOR) AS vioids,
    GROUP_CONCAT(DISTINCT vio.vioname ORDER BY cv.vioid SEPARATOR) AS vionames
    

    这样就可以确保每个联表查询结果中的重复值被去除了。

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

报告相同问题?

问题事件

  • 系统已结题 12月28日
  • 已采纳回答 12月20日
  • 创建了问题 9月3日

悬赏问题

  • ¥25 自动填写QQ腾讯文档收集表
  • ¥15 DbVisualizer Pro 12.0.7 sql commander光标错位 显示位置与实际不符
  • ¥15 求一份STM32F10X的I2S外设库
  • ¥15 android 打包报错
  • ¥15 关于stm32的问题
  • ¥15 ncode振动疲劳分析中,noisefloor如何影响PSD函数?
  • ¥50 寻找fpga的benchmark
  • ¥50 如何在arduino上,实现用4×4矩阵键盘按键控制2004显示屏输出图中显示功能的代码?
  • ¥15 P1口接8个发光二极管,利用定时计数器1编写程序
  • ¥20 keil5编译找不到.h文件该如何解决