【问题标题】:how to select distinct rows from two tables linked with foreign key如何从用外键链接的两个表中选择不同的行
【发布时间】:2016-02-24 09:56:35
【问题描述】:

我想显示数据库中的图像。我有两个表 Gallery_photos

gallery_category

我想显示任何带有 category_name 的照片文件名。 photo_category 是 category_id 的外键

我写的mysql查询

SELECT distinct a.category_name
       ,b.photo_filename 
FROM gallery_category a  
inner join gallery_photos b  on (a.category_id=b.photo_category)

请帮我做...

我想完全像这样选择

albums/1456226111.jpg interior
albums/1456226239.jpg graphics
albums/1456226339.jpg random
albums/1456226478.jpg goods

【问题讨论】:

  • albums/1456226122.jpg albums/1456226153.jpg albums/1456226168.jpg 此图片来自室内类别。那你为什么要写图形、随机和商品?

标签: mysql


【解决方案1】:

你可以按组分组

SELECT a.category_name,b.photo_filename 
FROM gallery_category a  JOIN gallery_photos b  
ON a.category_id=b.photo_category 
GROUP BY a.category_name

【讨论】:

  • @SibyXavier 这是我的荣幸。
  • 你确定它有效吗? b.photo_filename 列不包含在聚合函数或 GROUP BY 子句中
【解决方案2】:

使用左连接保留左表中的所有行。

SELECT 
  b.photo_filename, 
  a.category_name 
FROM 
  gallery_category a  LEFT join gallery_photos b  ON (a.category_id=b.photo_category)

看看这个!

What's the difference between INNER JOIN, LEFT JOIN, RIGHT JOIN and FULL JOIN?

【讨论】:

  • 它显示所有类别的所有图像,但他只希望每个类别只有一张图像,对吗? @SibyXavier
  • 但是如果类别中有多个图像怎么办?选择的标准是什么?
猜你喜欢
  • 2012-12-18
  • 2019-10-27
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
相关资源
最近更新 更多