У меня есть две таблицы в отношениях один-ко-многим.Строка в родительской таблице (с именем Inquiry) может иметь ноль или N строк дочерней таблицы (с именем InqNotes).
Я хочу получить определенные строки из родительской таблицы вместе с самой последней соответствующей строкой, если таковая имеется, издетский стол.Я пробовал следующие SQL-запросы:
A:
select i.*, n.LastUpdated as NotesTs, n.Notes, n.LoginId as NotesBy
from MYDB.Inquiries i
LEFT outer join MYDB.InqNotes n on n.InquiryId=i.Id
and n.Id = (select max(n2.Id) from MYDB.InqNotes n2 where n2.InquiryId=i.Id);
B:
select max(n.LastUpdated) as NotesTs, n.Notes, n.LoginId as NotesBy,
i.InquiryNo, i.Status, i.InquiryType, i.ClientName, i.PhoneNo, i.Id
from MYDB.Inquiries i
LEFT outer join MYDB.InqNotes n on n.InquiryId=i.Id
group by n.LastUpdated, n.Notes, n.LoginId, i.InquiryNo, i.Status, i.InquiryType, i.ClientName, i.PhoneNo, i.Id
Я ожидал, что два вышеупомянутых запроса вернут один и тот же набор записей.Каким-то образом они возвращают разные результаты.Запрос в A возвращает несколько записей меньше, чем то, что возвращает B (т. Е. Группа в каждом конкретном случае).Может быть, я пропускаю что-то ужасно простое, но я не могу понять, почему такое поведение запросов.Буду очень признателен за любые указания на то, что я делаю / ожидаю неправильно с этими запросами.