Это потому, что это неверный синтаксис.Если вы хотите ограничить строки, сравниваемые из соединенных таблиц, вам нужно заменить эти таблицы на подзапросы этих таблиц.
Делая несколько предположений о желаемом результате, простым примером будет замена
INNER JOIN products_description ON products.id=products_description.product_id LIMIT 1
с
INNER JOIN (SELECT * FROM products_description AS d WHERE d.product_id = product.id ORDER BY d.id DESC LIMIT 1) AS pd
Я бы НЕ рекомендовал этот точный подзапрос, хотя в качестве коррелированных подзапросов (подзапрос WHERE ссылается на внешний запрос)обычно довольно неэффективно;он будет выполняться отдельно для каждой строки в products
. Обычно такие подзапросы должны находить «сначала для каждого», включая (и часто группируя по) идентификатор «каждого», а затем присоединяться к этому идентификатору;поскольку это позволяет избежать дорогостоящей корреляции.