在sql中从多行创建一行

0g0grzrc  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(282)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

两年前关门了。
改进这个问题
我想创建一行,其中包含表中所有最新的数据,我找到了对每列分别执行的方法,可以在一个查询中执行吗?

这将是想要的答案表:

lndjwyie

lndjwyie1#

如果需要与max\u daye相关的行,可以使用join和max time1的子查询

select   m.p_id, m.aaa, m.bbb, m.ccc 
from mytable m
inner join (
  SELECT p_id,  max(time1) max_date 
  FROM   mytable
  group by p_id 
) t on t.max_date =  m.time1  and t.p_id = m.p_id

或者,如果您只需要每个p\U id的最大值,您可以使用

select   m.p_id, max(m.aaa), max(m.bbb), max(m.ccc )
from mytable m
group by m-p_id
8cdiaqws

8cdiaqws2#

可以使用相关子查询:

select t.*
from table t
where time1 = (select max(t1.time1) from table t1 where t1.p_id = t.p_id);
nfg76nw0

nfg76nw03#

可以使用相关子查询为每个不同id的每一列获取“最新”的非空值。

SELECT t1.p_id,
       (SELECT t2.aaa
               FROM elbat t2
               WHERE t2.p_id = t1.p_id
                     AND t2.aaa IS NOT NULL
               ORDER BY t2.time1 DESC
               LIMIT 1) aaa,
       ...
       (SELECT t2.ccc
               FROM elbat t2
               WHERE t2.p_id = t1.p_id
                     AND t2.ccc IS NOT NULL
               ORDER BY t2.time1 DESC
               LIMIT 1) ccc,
       FROM (SELECT DISTINCT
                    p_id
                    FROM elbat) t1;

相关问题