Добрый день. Есть две таблицы, одна database1 со списком нужных ID: Код (Text): IP | OID 0.0.0.1 | 93E8FECB-8782-4357-B0FC-75C147594F50 0.0.0.1 | E0472205-8C90-4C66-A5EF-F36BE9399875 0.0.0.1 | B8BBC8B6-F36F-434F-9574-91CDAF1E708D И вторая таблица database2 из которой нужно выдернуть строку с последней датой по всем OID из первой таблицы. Если напишу такой запрос и выдерну просто startDate и OID все сработает: PHP: SELECT MAX(DT.startDate) AS date, CON.OID FROM database1 AS DT JOIN database2 AS CON ON(CON.OID = DT.OID ) WHERE CON.IP = '0.0.0.1' GROUP BY CON.OID Но мне нужны так же и другие параметры по мимо даты. Подскажите как выдернуть из таблицы всю строку, а не только два столбца? Сейчас я вытаскиваю только эту самую максимальную дату. Результат запроса примерно такой: Код (Text): date | OID 2019-02-12 23:30:02.000 | 93E8FECB-8782-4357-B0FC-75C147594F50 2019-02-06 20:00:27.000 | E0472205-8C90-4C66-A5EF-F36BE9399875 2019-02-08 13:57:24.000 | B8BBC8B6-F36F-434F-9574-91CDAF1E708D Если напишу просто Код (Text): SELECT MAX(DT.startDate) AS date, CON.OID, DT.endDate Будет ошибка : Столбец "database1.endDate" недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY. Подскажите как правильно написать запрос.
Потому что в общем случае может быть несколько строк, удовлетворяющим условиям группировки. И данные в остальных ячейках этих строк могут не быть одинаковыми. Можно запрос, определяющий дату и OID использовать в качестве "таблицы" для join (не забыв про псевдоним "внутреннего" запроса): Код (Text): select t1.* from table1 as t1 join (select max(..) as `date`, OID ... group by OID) as Q1 on Q1.`date` = t1.`date` and Q1.OID = t1.oid