0

我有以下查询...

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

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

我已经看到有一些与此查询类似的问题,但我似乎无法通过研究它们来找出我的问题的答案。

提前致谢!

4

3 回答 3

0

select 对“from”位中的表进行笛卡尔积。“在哪里”剔除那些不满足条款的人。“order by”对其余部分进行排序。混合是不同的 - 你得到的第一行与下一行不同。

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

于 2013-03-22T23:27:11.527 回答
0

Distinct 返回指定列集的唯一行。也许您应该尝试将其用作子查询:

select min(id), title from photo_gallery group by title
于 2013-03-22T23:28:05.110 回答
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
于 2013-03-22T23:33:03.700 回答