Вы можете сгруппировать по пользователю и рассчитать Min (расстояние), а затем сделать ссылку на первый запрос, чтобы выяснить, какое хранилище было на таком расстоянии от пользователя.
Это ваш запрос с некоторыми полями, удаленными для ясности (и с псевдонимом User.Id)
SELECT
User.id as userid,
Sqr((User.Lat - Store.Lat)^2+(User.Long - Store.Long)^2) AS distance
FROM User, Store
Это оборачивает первый запрос, чтобы вычислить минимальное расстояние до магазина для каждого пользователя
select userid, min(distance) from (
SELECT
User.id as userid,
Sqr((User.Lat - Store.Lat)^2+(User.Long - Store.Long)^2) AS distance
FROM User, Store
) as x
group by userid
Присоединитесь к исходному запросу, чтобы заполнить поля пользователя и выяснить, какое хранилище находится на этом (минимальном) расстоянии от пользователя
select z.*
from (
select userid, min(distance) as distance from (
SELECT
User.id as userid,
Sqr((User.Lat - Store.Lat)^2+(User.Long - Store.Long)^2) AS distance
FROM User, Store
) as x
group by userid
) as y inner join
(
SELECT
User.Id as UserId, ... (populate the remaining user fields),
Store.*,
Sqr((User.Lat - Store.Lat)^2+(User.Long - Store.Long)^2) AS distance
FROM User, Store
) as z
on y.userid = z.userid and y.distance = z.distance