显示使用 DISTINCT 或 GROUP BY 连接两个 MySQL 表而不重复的结果

Displaying result of joining two MySQL tables without duplicates, using DISTINCT or GROUP BY

我有两个 table: BLOG table 使用方案 (id_blog、名称、内容、日期、建筑)和 IMG table 方案(id_img、文件名、id_blog)。

通过下面的查询,我得到了 LEFT JOIN tables BLOGIMG 的结果,没问题。

SELECT b.name, 
       b.content, 
       i.id_blog, 
       i.filename
FROM blog b
LEFT JOIN img i USING(id_blog)
WHERE building IN (2,3)
ORDER BY i.filename DESC

我的查询结果:

Building A | Warehouse | 1 | pic3.jpg
Building A | Warehouse | 1 | pic4.jpg
Building A | Warehouse | 1 | pic6.jpg
Building B | Store     | 2 | pic7.jpg
Building B | Store     | 2 | pic9.jpg
Building B | Store     | 2 | pic8.jpg
Building C | School    | 3 | pic5.jpg

我应该怎么做才能得到不重复的结果 namecontentid_blog 列。

我需要的是下面的结果:

Building A | Warehouse | 1 | pic6.jpg
Building B | Store     | 2 | pic9.jpg
Building C | School    | 3 | pic5.jpg

使用:

SELECT b.name, 
       b.content, 
       i.id_blog, 
       max(i.filename)  as filename
FROM blog b
LEFT JOIN img i USING(id_blog)
WHERE building IN (2,3)
GROUP BY b.name,b.content,i.id_blog
ORDER BY filename DESC;

Demo

鉴于 IMG table 的数据(和设计),他们无法获得您想要的结果 table。

如果您的意图是每个博客只有一个 img,则删除错误记录(即 ib_blog、文件名 1、pic3.jpg 1、pic4.jpg)或将 img_filename 专栏添加到博客 table 并删除 img table.