Mysql 在SQL中从多行创建一行
我想创建一行,其中包含表中的所有最新数据,我找到了为每个列分别创建的方法,是否可以在一个查询中创建 这将是想要的答案表: 您可以使用相关子查询:Mysql 在SQL中从多行创建一行,mysql,sql,Mysql,Sql,我想创建一行,其中包含表中的所有最新数据,我找到了为每个列分别创建的方法,是否可以在一个查询中创建 这将是想要的答案表: 您可以使用相关子查询: select t.* from table t where time1 = (select max(t1.time1) from table t1 where t1.p_id = t.p_id); 如果需要与max_daye相关的行 您可以将联接与子查询一起用于max time1 select m.p_id, m.aaa, m.bbb, m.c
select t.*
from table t
where time1 = (select max(t1.time1) from table t1 where t1.p_id = t.p_id);
如果需要与max_daye相关的行 您可以将联接与子查询一起用于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_id的最大值,您可以使用
select m.p_id, max(m.aaa), max(m.bbb), max(m.ccc )
from mytable m
group by m-p_id
可以使用相关子查询获取每个不同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;
同一问题的可能重复,您只是在寻找“最后一个”而不是“第一个”。@uuerdo因为这是针对Postgres的,所以我认为这不是正确的重复链接。虽然它确实是一个复制品,但这一个更接近于一个更有用的“复制品”所以post可能就是这个,因为它引用的是MySQL。@错误2646,该答案也有一个与供应商无关的版本。在这种情况下,我的ccc列将为空,因为没有ccc的数据,其中p_id=1的max time1的问题是并非所有列都已满,在这种情况下,对于p_id 1,ccc列将为空,而您只需要每个p_id的最大值。。。答案已更新。。希望是有用的