简单明了的列,无法让我的头围绕它

时间:2013-03-22 23:21:40

标签: mysql distinct

我有以下查询...

SELECT DISTINCT TITLE, ID, IMAGE_1, IMAGE_1_DESCRIPTION
FROM PHOTO_GALLERY
ORDER BY ID ASC

当然它会显示所有条目,但我希望它过滤掉任何具有相同TITLE字段的选项,只选择最低ID

我看到有一些问题与此查询类似,但我似乎无法通过研究来解决我的问题。

提前致谢!

3 个答案:

答案 0 :(得分:0)

select在“from”位中执行表格的笛卡尔积。 “哪里”敲出那些不符合条款的人。 “按顺序排序”对其余部分进行排序。进入混合是不同的 - 你得到的第一行与下一行不同。

所以在标题上添加一个where子句并使用LIMIT

答案 1 :(得分:0)

Distinct返回指定列集的唯一行。也许你应该尝试使用它作为子查询:

select min(id), title from photo_gallery group by title

答案 2 :(得分:0)

您需要group by,而不是distinct。获得最低ID:

SELECT TITLE, min(ID) as minid
FROM PHOTO_GALLERY
group by title
ORDER BY minID ASC

要获取其余信息,您需要重新加入表格。这是一个带有显式连接的版本:

SELECT pg.TITLE, pg.ID, pg.IMAGE_1, pg.IMAGE_1_DESCRIPTION
FROM PHOTO_GALLERY pg join
     (SELECT TITLE, min(ID) as minid
      FROM PHOTO_GALLERY
      group by title
     ) pgt
     on pg.title = pgt.title and pg.id = pgt.minid
ORDER BY ID ASC