Для правильного вопроса надо знать половину ответа
Логично. Вложенные зависимые подзапросы - это очень плохо. А вообще-то весь запрос кривой и в новых версиях MySQL работать не будет из-за ограничений на поля при группировке.
SELECT *
FROM `products`
JOIN (
SELECT MAX(`discount_price`) AS `max_price`, `product_id`
FROM `options`
GROUP BY `product_id`
) AS `max` ON `max`.`product_id` = `products`.`id`
ORDER BY `max`.`max_price` ASC
LIMIT 24
Для правильного вопроса надо знать половину ответа
По большому счёту, для сортировки записей дочерней модели не важен порядковый номер дочерней записи внутри родителя, важно только возрастание некоего признака.
То есть, если у вас в дочерней модели есть автоинкрементное поле, то сортировка по нему дочерних записей даст порядок их добавления, и не имеет значения, что в этом поле (10, 17, 35, 1221), а не (1, 2, 3, 4).
Для правильного вопроса надо знать половину ответа
Стандартно - в отдельной таблице связи многие-ко-многим.
Современный способ - в колонке с типом JSON.
Говнокод - в строке через запятую или другой разделитель.
Для правильного вопроса надо знать половину ответа
"Весь список запросов по sql" - это примерно как "все предложения русского языка".
SQL - это язык запросов, надо освоить его синтаксис и семантику, тогда сможете написать любой необходимый вам запрос.
Для правильного вопроса надо знать половину ответа
Текстовые значения в запросе должны браться в кавычки.
Автоинкремент резервирует следующее значение перед каждой попыткой выполнить INSERT. Если попытка не удалась, то зарезервированное значение не возвращается и в списке значений автоинкрементного поля появляется лакуна.
Для правильного вопроса надо знать половину ответа
Для MySQL 8
SELECT DISTINCT `age`, FIRST_VALUE(`hobbies`) OVER `win` AS `hobbies`
FROM (
SELECT `age`, `hobbies`, COUNT(*) AS `count`
FROM `test`
GROUP BY `age`, `hobbies`
) AS `t`
WINDOW `win` AS (
PARTITION BY `age`
ORDER BY `count` DESC
)