Dear Members!
I use the subselects many times in my Queries to get some info (Name, etc) from a subtable.
Sometimes I have to use it to get the last element.
select t.*,
(
select value from u join ... where ...
order by id desc limit 1
) as last_value,
It is ok, but how can I get more values from subselect without repeating the subquery?
select t.*,
(
select value from u join ... where ...
order by date desc limit 1
) as last_value,
(
select type from u join ... where ...
order by date desc limit 1
) as last_type,
This is not too comfortable, and may make mistakes if the join is not defined properly or the date has duplicates.
Ok, I can use WITH Query:
with
pre as ( select * from t .... )
,sub as (select pre.*, (select
u.id from u where ... limit 1) as last_u_id
select sub.*, u.value, u.type, u.nnn from sub
left join u on (
u.id = sub.last_u_id)
But sometimes it makes the Query very long (because I have to read more subselects).
Do you know a simple method for this, like:
select t.*,
(
select value, type, anyfield from u join ... where ...
order by date desc limit 1
) as last_value, last_type, anyfield
?
Thank you for the help!
Best regards
Chris