Задавайте вопросы, мы ответим
Вы не зашли.
Есть таблица показаний приборов учета indication, в ней поля
id
ls - лицевой счет
hvs - показания ХВС
gvs - показания ГВС
en - показания ЭЭ
date - дата показаний
Нужно сделать выборку, чтобы в ней отразились текущие показания и предыдущие показания по одному лицевому счету
Помогите составить запрос. Составленный запрос не работает, ошибка Operand should contain 1 column(s). Т.е. во втором SELECT если выбрать одно поле, то работает, но мне нужно выбрать несколько.
SELECT id AS cur_id, ls AS cur_ls, hvs, gvs, en, date, (SELECT hvs, gvs, en, date FROM indication WHERE ls=cur_ls AND id<cur_id ORDER BY date DESC LIMIT 1) FROM indication WHERE date>=1593543600 AND date<=1596221999 ORDER BY date DESC
Неактивен
Используйте оконные функции если версия MySql позволяет
MySQL поддерживает оконные функции начиная с версии 8.0
Отредактированно klow (01.07.2020 10:49:19)
Неактивен
klow написал:
Используйте оконные функции если версия MySql позволяет
MySQL поддерживает оконные функции начиная с версии 8.0
Спасибо за наводку, но я новичок. Можете помочь составить запрос?
Неактивен
Версия: mysql-5.7.23
Неактивен
Неактивен
to, rutshtein
ваша задача - выбрать по 2 последних записи для каждого лицевого счета
см варианты решений в Выбрать несколько записей из каждой группы.
кроме того, чтобы использовать 1 подзапрос, в исходном запросе вы можете сделать
(SELECT concat(hvs, gvs, en, date) FROM
а на клиенте при обработке результата вычленять нужные значения (или по размеру величин, если он фиксирован, или используя при склейке при склейке специфические разделители)
to, klow
в 8-ке оптимальней будет использовать lateral
Неактивен
vasya написал:
to, rutshtein
ваша задача - выбрать по 2 последних записи для каждого лицевого счета
см варианты решений в Выбрать несколько записей из каждой группы.
кроме того, чтобы использовать 1 подзапрос, в исходном запросе вы можете сделать
(SELECT concat(hvs, gvs, en, date) FROM
а на клиенте при обработке результата вычленять нужные значения (или по размеру величин, если он фиксирован, или используя при склейке при склейке специфические разделители)
to, klow
в 8-ке оптимальней будет использовать lateral
Там поля могут быть NULL и при CONCAT всё становится NULL
Неактивен
ifnull() в помощь
Неактивен
Еще можно coalesce, даже лучше, ибо это все же стандарт ANSI, а ifnull - чисто mysql'евская фишка.
Неактивен