Преобразование 2 операторов выбора в один оператор в MySql - PullRequest
0 голосов
/ 18 марта 2020

Я использую два подзапроса для извлечения log_msg и log_state из одной таблицы. Я хочу спросить, как я могу преобразовать эти 2 подзапроса в один подзапрос, чтобы мне не нужно было вызывать одну и ту же таблицу дважды.

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';

1 Ответ

1 голос
/ 18 марта 2020

Вы можете присоединиться и отфильтровать верхнюю запись журнала для каждой группы следующим образом:

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)
...