Qwentor
@Qwentor
Веб-программист

Как сделать такой UPDATE?

В общем, в базе есть записи, у каждой записи есть поле dt, содержащее Timestamp времени добавления записи.

Примерный вид:
id | user | data | dt

По каждому пользователю записи «кучками», т.е. идет например 10 записей на интервале от 20 сек до 20 мин, далее все сутки пусто - следующие опять примерно в это время. Т.е. интервал между «кучами» не менее 23 часов.

Нужно добавить еще одну колонку в таблицу - dt_start. И вот в ней внутри каждой «кучи» надо проставить _минимальный_ Timestamp из этой кучи.

Подскажите как это сделать
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
если правильно понял задачу, то решить ее можно с помощью UPDATE + JOIN, например так:
UPDATE mytable
RIGHT JOIN 
(SELECT 
   `user`, 
   MIN(dt) as dt_start, 
   DATE(dt) as d 
FROM mytable 
GROUP BY user, d) as temp
ON mytable.user = temp.user AND DATE(mytable.dt) = temp.d
SET mytable.dt_start = temp.dt_start

а вообще для каждой кучи проставлять минимальное значение времени не очень хорошая идея - у Вас будет дублирование данных, т.к. у каждой записи в куче будет одна и та же dt_start. Если у Вас прям так явно вырисовываются кучи стоит сделать отдельную таблицу для их списка, и уже там проставлять минимальное время
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы