Есть таблица с такой архитектурой --------------------------------------------------------------- ID USER_ID COUNT READ DATETIME --------------------------------------------------------------- 1 2 значение значение 0101012014 --------------------------------------------------------------- 2 2 значение значение 0101012014 --------------------------------------------------------------- Как сделать выборку по последней записи определённого user_id и внести в неё значение read Тоесть внести значение в поле read последней записи если user_id=2
пара (user_id, datetime) уникальна? если нет, то нет решения если да, то сначала находишь max(datetime) для данного пользователя, затем по (user_id, datetime) выбираешь любые другие поля читай доки по group by
user id не уникален в таблице он может повторяться !! пример Для пользователя была сделана email рассылка и данные о ней отправились в таблицу отправились значения count user_id datetime и id (auto increment) именно в эту строку в поле read должны update +1 значение при каждом открытии письма
Два варианта: 1. Двумя запросами: сначала найти id, затем update по найденному id 2. Одним запросом: многотабличный update, где во вспомогательной таблице определяется нужный id. Как найти id? Есть как минимум 5 способов, смотри статью Группировка в MySQL. Там практически твой пример разобран.
Слушай ты мне довольно часто помогаешь ну не всегда толково канеш!) igordata Добавлено спустя 3 минуты 30 секунд: А Group by он разгрупирует таблицу обратно?
я стараюсь недоговаривать очевидного, чтобы человек научился сам мыслить этими новыми для него штуками. Сейчас скажу, что ордербай сортирует, а лимит - лимитирует. И нужны индексы, чтобы всю таблицу серверу не пришлось дрючить ради одной строки. Вперёд =)
ничего никто не изменит, ты что. Это всё только на выборку влияет. Соотв, если ты хочешь из лога, в котором куча юзеров заходила кучу раз, и всё это сохранено, выбрать сразу несколько юзеров и их даты последнего захода, то тебе надо юзать групбай и ордербай. Лимит поможет не выбирать слишком много за раз.