在MySql中将2条select语句转换为单个语句

在MySql中将2条select语句转换为单个语句,mysql,sql,join,greatest-n-per-group,Mysql,Sql,Join,Greatest N Per Group,我使用两个子查询从同一个表中获取log\u msg和log\u state。 我想问一下如何将这两个子查询转换为一个子查询,这样就不需要对同一个表进行两次调用 SELECT t1.objectId, t1.name, (SELECT a.logs FROM logTable a WHERE a.logId = t1.logId ORDER BY id DESC LIMIT 1) AS log_msg, (SELECT a.state FROM logTable a WHERE a.logId

我使用两个子查询从同一个表中获取
log\u msg
log\u state
。 我想问一下如何将这两个子查询转换为一个子查询,这样就不需要对同一个表进行两次调用

SELECT t1.objectId, t1.name, 
(SELECT a.logs FROM logTable a WHERE a.logId = t1.logId ORDER BY id DESC LIMIT 1) AS log_msg,
(SELECT a.state FROM logTable a WHERE a.logId = t1.logId ORDER BY id DESC LIMIT 1) AS log_state,
FROM table1 t1 WHERE t1.CreateDate >= '2019-12-01';

您可以按如下方式加入和筛选每个组的顶部日志记录:

select t1.objectId, t1.name, l.logs, l.state
from table1 t1
inner join logTable l
    on l.id = (select max(l1.id) from logTable l1 where l1.logId = t1.id)
这是一个查询,每天都会在堆栈溢出时询问。例如,见