我有以下查询...
SELECT DISTINCT TITLE, ID, IMAGE_1, IMAGE_1_DESCRIPTION
FROM PHOTO_GALLERY
ORDER BY ID ASC
当然它会显示所有条目,但我希望它过滤掉任何具有相同 TITLE 字段的条目,只选择最低的 ID
我已经看到有一些与此查询类似的问题,但我似乎无法通过研究它们来找出我的问题的答案。
提前致谢!
select 对“from”位中的表进行笛卡尔积。“在哪里”剔除那些不满足条款的人。“order by”对其余部分进行排序。混合是不同的 - 你得到的第一行与下一行不同。
所以在标题上添加一个 where 子句并使用 LIMIT
Distinct 返回指定列集的唯一行。也许您应该尝试将其用作子查询:
select min(id), title from photo_gallery group by title
你需要一个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