Если вы действительно хотите, чтобы у вас был только один младший клиент, даже если есть связь, используйте LIMIT
:
SELECT c.CUSTOMERID, c.age, c.name
FROM CUSTOMER c
INNER JOIN FACEBOOK_ORDER_DETAIL o
ON c.CUSTOMERID = c.CUSTOMERID
ORDER BY
c.age
LIMIT 1;
Это должно работать, потому что, если клиент присоединяется к таблице сведений о заказе, это означает, что у него был хотя бы один заказ.
Если вместо этого вы хотите найти всех самых молодых клиентов, включая все связи, то для этого неплохой способ - аналитическая функция RANK
:
SELECT DISTINCT CUSTOMERID, age, name
FROM
(
SELECT c.CUSTOMERID, c.age, c.name, RANK() OVER (ORDER BY c.age) rnk
FROM CUSTOMER c
INNER JOIN FACEBOOK_ORDER_DETAIL o
ON c.CUSTOMERID = o.CUSTOMERID
) t
WHERE rnk = 1;
Демо
Для более ранних версий MySQL мы можем использовать подзапрос в качестве обходного пути для отсутствия RANK
:
SELECT DISTINCT c.CUSTOMERID, c.age, c.name
FROM CUSTOMER c
INNER JOIN FACEBOOK_ORDER_DETAIL o
ON c.CUSTOMERID = c.CUSTOMERID
WHERE c.age = (SELECT MIN(t1.age)
FROM CUSTOMER t1
INNER JOIN FACEBOOK_ORDER_DETAIL t2
ON t1.CUSTOMERID = t2.CUSTOMERID);
Демо