我在 MySQL 数据库中有一个名为 photos
的表,其中包含照片文件名和其他相关信息。结构如下:
+----------+------------+-------------+
| photo_id | gallery_id | photo_fname |
|----------|------------|-------------|
| 1 | 1 | DSC2001 |
| 2 | 1 | DSC2002 |
| 3 | 1 | DSC2003 |
| 4 | 2 | DSC2004 |
| 5 | 2 | DSC2005 |
| 6 | 2 | DSC2006 |
| 7 | 3 | DSC2007 |
| 8 | 3 | DSC2008 |
| 9 | 3 | DSC2009 |
+----------+------------+-------------+
我想要做的是编写一个查询,返回每个图库的第一个照片文件名,如下所示:
+----------+------------+-------------+
| photo_id | gallery_id | photo_fname |
|----------|------------|-------------|
| 1 | 1 | DSC2001 |
| 4 | 2 | DSC2004 |
| 7 | 3 | DSC2007 |
+----------+------------+-------------+
我对此进行了研究,直到昨晚我的头痛压倒了我,尽管我发现了类似的问题,但在我看来,他们似乎并没有想做完全相同的事情。我尝试了子查询,我尝试了其他帖子中的示例代码,但无法使其工作。要么是由于脑雾,要么只是没有找到正确的解决方案。
我只想返回如上所示的结果,仅此而已。
非常感谢!
更新: 抱歉,表格名称是 photos,FWIW。
其次,我真正想要的是文件名,而不是照片或图库 ID,我只是为了视觉清晰度而添加了这些内容。如果这引起了困惑,我深表歉意。
最佳答案
试试这个:
SELECT *
FROM YourTable
WHERE photo_id IN ( SELECT MIN(photo_id)
FROM YourTable
GROUP BY gallery_id)
See a demo
对于您更新的问题:
SELECT photo_fname
FROM photos
WHERE photo_id IN ( SELECT MIN(photo_id)
FROM photos
GROUP BY gallery_id)
关于php - 如何从一个数据库表中的组返回第一个值,MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14758342/