mysql - 如何从左连接中删除冗余字段

标签 mysql sql jsp

我有以下查询来从两个不同的表中获取消息和图像。 这里一条消息可以有多个图像

为此,我编写了以下查询,该查询运行正常并显示以下结果

select msg.messageid, msg.message, msg.sentby, msg.adddate, 
p_i.image_id ,p_i.small_pic_path 
from user_messages as msg
LEFT JOIN post_images as p_i
on msg.messageid=p_i.messageid
where msg.messageid='zpx1btrpvpa1360154523078'
order by msg.adddate desc

输出为

 messageid  message  sentby  adddate  image_id  small_pic_path
   1         abc      aa      12/2/12   6          /sdf/sdf
   1         abc      aa      12/2/12   7          /asdf/df
   1         abc      aa      12/2/12   8          /cxd/sxc
   1         abc      aa      12/2/12   9          /zz/szz

这里由adddate发送的messageid消息在jsp页面中重复显示 总共显示 4 条不同的消息。

但我想显示 4 个 imageid 和small_pic_path(基于消息 ID)以及相关消息详细信息

我想显示为

1) 留言 发送者
该消息的messag id的所有small_pic_path

1) 留言 发送者
该消息的messag id的所有small_pic_path

2) 留言 发送者
该消息的messag id的所有small_pic_path

3) 留言 发送者
该消息的messag id的所有small_pic_path

最佳答案

在没有真正理解您的要求的情况下,您写道:

But I want to show 4 imageid and small_pic_path with a single message detail

您想如何显示这些记录?

假设您的意思是在同一行,然后考虑使用GROUP_CONCAT:

SELECT msg.messageid, msg.message, msg.sentby, msg.adddate, 
  group_concat(p_i.image_id separator ';') imageids,
  group_concat(p_i.small_pic_path separator ';') picpaths
FROM ...

这是一个SQL Fiddle展示结果。

如果您想以不同的方式显示结果,您很可能应该通过 UI 进行处理。

祝你好运。

关于mysql - 如何从左连接中删除冗余字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14742177/

相关文章:

php - 如何正确地将过滤器添加到该分页脚本中?

mysql - 酒店日期过滤器 : return only hotels that respect minimum stay period specified for range (SQL or Elasticsearch)

sql - 文本列唯一不区分大小写

java - Tomcat JSP 错误 500

java - 在网站后端运行 java 应用程序

c# - mysql存储过程insert语句 "22-12-2010"修改日期格式为 "2010-12-22"

php - 使用 php 在 mysql 中插入带有标题和详细信息的照片

sql - Postgres - 更改列数据

sql - 在 Sqlite 的 Insert 命令中调用用户定义的函数

Spring Boot 使用带有 JSP 模板的资源模板文件夹而不是 webapp 文件夹?