没有使用DISTINCT / GROUP BY如何从mysql 5表中获取唯一的数据行?

时间:2011-12-21 05:10:09

标签: php mysql sql left-join

我有一个图像表和图像视图状态表。

在每次点击图片时,我都会跟踪图片查看时间。状态。日期时间..所以在图像视图状态表中,一个图像有多个条目。

我需要检查一个用户是否已经查看过一张图片。

所以我写了一个像这样的查询..

select A.title, if(B.view_status='completed','completed','notviewed') from images A left join imgstatus_view B on (A.imgId=B.ImgId and A.fileId=B.fileID) Where userId=1 and imgId=121

如果我查看一个图像三次获取3条记录。我只需要一条记录来检查用户是否查看了图像。

所以不使用DISTINCTGROUP BY如何获取唯一的数据行。

请帮帮我。

1 个答案:

答案 0 :(得分:3)

您可以使用ORDER BY和LIMIT子句。获取最新记录,您可以使用以下查询

select A.title, if(B.view_status='completed','completed','notviewed') from images A left join imgstatus_view B on (A.imgId=B.ImgId and A.fileId=B.fileID) Where userId=1 and imgId=121 ORDER BY datetimefield DESC LIMIT 0,1

获取旧记录

select A.title, if(B.view_status='completed','completed','notviewed') from images A left join imgstatus_view B on (A.imgId=B.ImgId and A.fileId=B.fileID) Where userId=1 and imgId=121 ORDER BY datetimefield LIMIT 0,1

如果您没有datetime字段,请删除ORDER BY子句,该子句将提供最近修改的记录