Ваш вопрос не так ясен, как мог бы быть, но если вы хотите иметь одну строку в наборе результатов для каждой строки в таблице RCode, содержащую не более одной строки информации из таблицы CCode, то вам следует написатьваш запрос, чтобы генерировать именно то, что вы хотите, а не возиться с набором результатов после извлечения данных.Так как вам нужна одна строка из таблицы CCode на значение RCode, мы можем использовать:
SELECT cc.CCode, cc.CName, rc.RCode, rc.RName
FROM RCode AS rc
LEFT JOIN (SELECT c1.CCode, c1.RCode, c1.CName
FROM CCode AS c1
JOIN (SELECT c2.RCode, MAX(c2.CCode) AS CCode
FROM CCode AS c2
GROUP BY c2.RCode) AS c3
ON c1.CCode = c3.CCode AND c1.RCode = c3.RCode
) AS cc
ON cc.RCode = rc.RCode
Самый внутренний подзапрос (помеченный c3) дает вам максимальный CCode для каждого RCode в таблице CCode.Когда это соединяется с таблицей CCode, это также дает вам соответствующее CName.Этот результирующий набор (помеченный cc) остается внешним соединенным с таблицей RCode, но в результирующем наборе cc для каждого RCode имеется не более одной строки, если только в таблицах CCode не содержится несколько строк с одинаковым RCode и максимальным CCodeзначение.Если это проблема, то вам нужно найти альтернативный механизм, который даст вам одну строку из таблицы CCode на значение RCode (возможно, MAX(CName)
вместо MAX(CCode)
).