#mysql #sql
#mysql #sql
Вопрос:
Я пытаюсь задать sql-запрос, чтобы получить строку с самым последним значением updated_at для каждого пользователя таким образом:
select cr.id_client,cr.updated_at,from_unixtime(cr.updated_at)
from clients_records as cr
join clients_survey_records as csr
on cr.id=csr.id
group by id_client
having updated_at = max(updated_at)
Но это не работает
Комментарии:
1. Пожалуйста, укажите имена столбцов, чтобы было ясно, откуда берутся столбцы.
Ответ №1:
используйте подзапрос corelates
select c1.* from clients_records c1
where c1.updated_at=( select max(updated_at) from clients_records
c2 where c1.id_client=c2.id_client
)
Ответ №2:
Я думаю, вам просто нужна MAX()
функция:
select cr.id_client, max(csr.updated_at), from_unixtime(max(csr.updated_at))
from clients_records cr join
clients_survey_records csr
on cr.id = csr.id
group by id_client;
Ответ №3:
Доброе утро.
Если я вас понимаю, вы можете получить самый последний измененный регистр. Правильно? Если это так, попробуйте:
SELECT cr.id_client,
(
//Some query to concat and group data contained at clients_survey_records that You need
) AS last_survey_records
FROM clients_records as cr
INNER JOIN clients_survey_records as cs
WHERE cr.id_client = cs.fk_client_id
ORDER BY cr.id_client;
Вы можете легко заказать записи опроса с помощью updated_at .
Некоторые ссылки: https://www.w3resource.com/mysql/string-functions/mysql-concat-function.php
https://www.w3resource.com/mysql/aggregate-functions-and-grouping/aggregate-functions-and-grouping-group_concat.php
https://www.w3resource.com/mysql/string-functions/mysql-concat_ws-function.php