LEFT JOIN может возвращать несколько копий данных из таблицы1, если на внешний ключ для строки в таблице 1 ссылаются несколько строк в таблице 2.
Если вы хотите, чтобы он возвращал только 16 строк, по одной для каждой строки таблицы 1, и со случайным набором данных для таблицы 2, вы можете использовать просто обычную GROUP BY:
select *
from table1
left join table2 on table1.name = table2.name
group by table1.name
GROUP BY
агрегирует строки на основе поля, поэтому все дубликаты таблицы 1 будут объединены в одну строку. Как правило, вы указываете агрегатные функции, чтобы объяснить, как строки должны свернуться (например, для строки чисел вы можете свернуть ее с помощью SUM (), чтобы одна строка была итоговой). Если вам нужна только одна случайная строка, не указывайте никаких агрегатных функций. MySQL по умолчанию просто выберет одну строку (обратите внимание, что это специфично для MySQL, большинство баз данных потребует, чтобы вы указывали агрегаты при группировании). То, как оно выбирается, не является технически «случайным», но оно не обязательно предсказуемо для вас. Я думаю, под «случайным» вы на самом деле подразумеваете «подойдет любая строка».