'What's happening with GROUP BY statement

Without going into the details of the tables, here is a query that outputs 34 rows.

SELECT `t`.`id_product`,
       `product_lang`.`name`,
       supplies_detail.id_supplies_detail,
       `supplies_in_process`.id_supply
FROM `ps_product` `t`
         LEFT OUTER JOIN `ps_product_lang` `product_lang` ON (`product_lang`.`id_product` = `t`.`id_product`)
         LEFT OUTER JOIN `supplies_detail` `supplies_detail` ON (`supplies_detail`.`id_product` = `t`.`id_product`)
         LEFT OUTER JOIN `supplies` `supplies_in_process`
                         ON (`supplies_detail`.`id_supply` = `supplies_in_process`.`id_supply`) AND
                            (supplies_in_process.state = 'added')
WHERE ((product_lang.name NOT LIKE '[del]%') AND (t.group_id = '14884'))
ORDER BY t.id_product DESC;

Query without GROUP BY

But it is important for the processor to understand that there will be no rows with duplicate t.id_product in the result, so we add GROUP BY t.id_product to this query. The result changes to:

Query with GROUP BY

With exactly the same 34 rows we get additional unrelated data. How did it happen? Thanks

MySQL 8.0.25-15



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source