Есть таблица
dsl_checkins и
area_distance. В area_distance 3 поля :
distance
area1
area2
Для примера:
distance = 3456
area1 = phoenix
area2 = houston
Мне нужно получить с
dsl_checkins запись где distance самая маленькая и нужно заботиться о
usage_flag поле(дабы небыли гонок). Думал сделать красиво одним запросом:
UPDATE dsl_checkins DC
join area_distance AD
on AD.area2 = DC.area
set DC.usage_flag=1,
DC.id = (SELECT @dsl_id := DC.id)
WHERE DC.active = 1 AND
DC.offline = 0 AND
usage_flag = 0 AND
AD.area1 = 'houston'
ORDER BY AD.distance ASC, RAND()
limit 1;
Но получаю ошибку
Error Code: 1221. Incorrect usage of UPDATE and ORDER BY
На стековерфлов дали ссылку на документацию что так делать нельзя, и дают
ссылку.
Но вот как это:
UPDATE Ratemaster
SET Ratemaster.Rate =
(
SELECT Rates.Rate
FROM Rates
WHERE Ratemaster.user = Rates.user
ORDER BY Rates.id
LIMIT 1
)
применить к моему запросу не понимаю.
Есть идеи?
ПС: чувствую что не правильно все делаю но нет идей. Спасибо.