【问题标题】:Converting 2 select statements into a single statement within MySql在 MySql 中将 2 个 select 语句转换为单个语句
【发布时间】:2020-06-29 23:49:42
【问题描述】:

我正在使用两个子查询从同一个表中获取log_msglog_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';

【问题讨论】:

标签: mysql sql join greatest-n-per-group


【解决方案1】:

您可以加入并过滤每个组的顶部日志记录,如下所示:

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)

【讨论】:

    猜你喜欢
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多