Без использования DISTINCT / GROUP BY, как извлечь уникальную строку данных из таблицы MySQL? - PullRequest
0 голосов
/ 21 декабря 2011

У меня есть одна таблица изображений и таблица состояния просмотра изображений.

При каждом нажатии на изображение я отслеживаю время просмотра изображения.статус.дата и время .. Таким образом, в таблице состояния просмотра изображений имеется более одной записи для одного изображения.

Мне нужно проверить, просматривал ли один пользователь одно изображение или нет.

Поэтому я пишу один запросвот так ..

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 записи.Мне нужна только одна запись, чтобы проверить, просматривал ли пользователь изображение или нет.

Так что без использования DISTINCT или GROUP BY Как мне получить уникальную строку данных.

Пожалуйста, помогите мне.

1 Ответ

3 голосов
/ 21 декабря 2011

вы можете использовать предложения 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

, если у вас нет поля даты и времени, удалите предложение ORDER BY, которое даст самую последнюю измененную запись

...