powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запомнить max значение
8 сообщений из 8, страница 1 из 1
Запомнить max значение
    #38740102
lindex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, есть таблица в БД, в которой для каждой записи есть цифровое значение, которое обновляется время от времени (иногда довольно часто, раз в 15с). Требуется сделать новое поле, в котором будет записывать максимальное значение. Расскажите, пожалуйста, как это реализовать.
...
Рейтинг: 0 / 0
Запомнить max значение
    #38740121
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lindex, если имеется в виду "хранить в поле Б каждой записи максимальное значение из всех, присваивавшихся полю А этой же записи", то триггером на before update. ну и на before insert.
...
Рейтинг: 0 / 0
Запомнить max значение
    #38740519
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lindexДобрый день, есть таблица в БД, в которой для каждой записи есть цифровое значение, которое обновляется время от времени (иногда довольно часто, раз в 15с). Требуется сделать новое поле, в котором будет записывать максимальное значение. Расскажите, пожалуйста, как это реализовать.

пусть есть таблица
Код: sql
1.
create t (id int auto_increment, dat int, maxDat int, primary key(id));



тогда вот такой запрос всем полям обновит максимум из двух чисел: нового dat и ныне действующего максимума
Код: sql
1.
update t set maxDat = greatest(dat, maxDat)



такой запрос сделает тоже самое, но для заданного поля с номером 5
Код: sql
1.
update t set maxDat = greatest(dat, maxDat) where id = 5



вот такой запрос проставит каждой записи максимум по всем записям
Код: sql
1.
2.
3.
4.
5.
6.
update t set maxDat = 
(
    select max(dat) from 
        (select dat from t union select maxDat from t) tin 
    limit 1
)
...
Рейтинг: 0 / 0
Запомнить max значение
    #38740723
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LumixlindexДобрый день, есть таблица в БД, в которой для каждой записи есть цифровое значение, которое обновляется время от времени (иногда довольно часто, раз в 15с). Требуется сделать новое поле, в котором будет записывать максимальное значение. Расскажите, пожалуйста, как это реализовать.

пусть есть таблица
Код: sql
1.
create t (id int auto_increment, dat int, maxDat int, primary key(id));



тогда вот такой запрос всем полям обновит максимум из двух чисел: нового dat и ныне действующего максимума
Код: sql
1.
update t set maxDat = greatest(dat, maxDat)



такой запрос сделает тоже самое, но для заданного поля с номером 5
Код: sql
1.
update t set maxDat = greatest(dat, maxDat) where id = 5



вот такой запрос проставит каждой записи максимум по всем записям
Код: sql
1.
2.
3.
4.
5.
6.
update t set maxDat = 
(
    select max(dat) from 
        (select dat from t union select maxDat from t) tin 
    limit 1
)



думаеться мне двойной селект, дабы избежать ошибки - не использовать в сабквери таблицу где бновляем...

никчему из внутреннего подзапроса во внешний подзапрос тащить весь список айдишников
лучше сразу взять максимальный.

также думаеться, приклеивать максдат тоже не надо. ибо если уже запись удалена с таким дат, то и максимум должен уменьшиться... просто иначе теряеться смысл этого поля для каждой ячейки.

update t set maxDat = (select * from (select max(dat) from t)d)
както так.
...
Рейтинг: 0 / 0
Запомнить max значение
    #38740857
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453update t set maxDat = (select * from (select max(dat) from t)d)
както так.

в этом запросе берется максимальное по полю dat, тогда как подлинный максимум может содержаться либо в dat, либо в maxDat, именно поэтому в подвале дерева лежит юнион

насчет макса в подвале...
я не совсем знаю как ведут себя запросы типа таких

Код: sql
1.
select max(a) from a union select max(b) from a



поэтому лично я всю жизнь делал с выносом макса

Код: sql
1.
select max(a) from (select a from a union select b from a) t
...
Рейтинг: 0 / 0
Запомнить max значение
    #38740886
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumixя не совсем знаю как ведут себя запросы типа такиха что тут непонятного? берутся 2 значения, ьакс(а) и макс(б), выводятся либо оба(если разные), либо одно(если одинаковые)
...
Рейтинг: 0 / 0
Запомнить max значение
    #38740887
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumixпоэтому лично я всю жизнь делал с выносом максаэто какбэ вообще разные запросы получаются :)
...
Рейтинг: 0 / 0
Запомнить max значение
    #38740904
lindex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirlindex, если имеется в виду "хранить в поле Б каждой записи максимальное значение из всех, присваивавшихся полю А этой же записи", то триггером на before update. ну и на before insert.
Угу.


Всем большое спасибо!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запомнить max значение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]