Yes, if you select a column that is functionally independent of the GROUP BY clause, you will get a random (*) choice in MySQL. This is not an ANSI SQL standard, and other databases will give you an error.
, , ? ,
WHERE rm.price<1000 -- or whatever price
.
, , , , , , SQL. ; . . -self-null-join:
SELECT
r.id, rm.id, rm.price, r.moyenne AS note,
get_distance_metres('47.2412254', '6.0255656', map_lat, map_lon) AS distance
FROM restaurant_restaurant AS r
JOIN restaurant_menu rm ON r.id=rm.restaurant_id
LEFT JOIN restaurant_menu AS no_menu ON r.id=no_menu.restaurant_id AND no_menu.price<rm.price
WHERE no_menu IS NULL
AND r.isVisible=1
AND distance<2000
AND rm.price<1000
ORDER BY distance
LIMIT 10;
, , , , .
(*: , , MySQL, , , , , , , - , . !)