ОК. Используем distinct, но так, чтобы уникальными были именно name, и больше ничего. В Постгре это очень даже хорошо работает, а в MySQL это достигается другими средствами.
Вот твой запрос (только я убрал условие "name like '% %'" как непонятное для меня)
SQL |
select distinct on (name ) name, id, short_desctiption, full_description, type from catalog where parent=10 and visible=true and type=1 order by name limit 30 |
В результате этого запроса будут выбраны 30 записей, удовлетворяющих указанным условиям, при этом из каждой группы с одинаковыми name будет взята только одна строка. Какая именно - можно регулировать через order by. Если предположить, что для каждого name существует несколько записей в БД, то тогда разные сортировки будут давать разные данные:
SQL |
order by name, id -- вариант 1 order by name, id desc -- вариант 2 order by name desc, id, short_descrition -- вариант 3
|
Вариантов тут много... Что укажешь, то и будет работать.