MySQL Запрос на внутреннее объединение, показывающий повторяющиеся записи - PullRequest
0 голосов
/ 08 апреля 2020

Я написал следующее MySQL Внутренний запрос на присоединение. Mysql версия 8.0.18-commercial

select r.network->>"$[0].name" , s.server, s.ipAddr,
    from table1 e
    inner join table2 s
        on e.objectId  = s.envId
    inner join resources r
        on e.objectId  = r.envId    
    inner join tpgs g
        on e.accountId  = g.objectId      
    inner join msgTable a
        on a.id  = (select max(a.id) from msgTable a where a.logId = s.AuditId)  
    ORDER BY dateSubmitted DESC ;

Однако я получаю дублирующиеся записи для нескольких записей.

Здесь s.server должен появляться только один раз.

Я добавил group by, как показано ниже, но получаю ошибку:

select r.network->>"$[0].name" , s.server, s.ipAddr,
    from table1 e
    inner join table2 s
        on e.objectId  = s.envId
    inner join resources r
        on e.objectId  = r.envId    
    inner join tpgs g
        on e.accountId  = g.objectId      
    inner join msgTable a
        on a.id  = (select max(a.id) from msgTable a where a.logId = s.AuditId)  
    GROUP BY s.server
    ORDER BY dateSubmitted DESC ;

Ошибка:

Code: 1055. Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'db.s.ipAddr' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

Пожалуйста, предложите, как обновить запрос, чтобы исключить повторяющиеся строки.

1 Ответ

0 голосов
/ 08 апреля 2020

Я могу получить желаемый результат, изменив запрос следующим образом:

select MAX(r.network->>"$[0].name") , s.server, MAX(s.ipAddr),
    from table1 e
    inner join table2 s
        on e.objectId  = s.envId
    inner join resources r
        on e.objectId  = r.envId    
    inner join tpgs g
        on e.accountId  = g.objectId      
    inner join msgTable a
        on a.id  = (select max(a.id) from msgTable a where a.logId = s.AuditId)  
    GROUP BY s.server 
    ORDER BY dateSubmitted DESC ;
...