我正在尝试执行嵌套查询。在第一个SELECT语句中,我提取所有类型为guest且计算距离小于指定值的guestID。
我创建了一个getDistance(lat1, long1, lat2, long2)来计算两点之间的距离。这里的问题是,在我对用户表执行的嵌套查询中,我在SELECT查询中同时具有user_id和distance。因此,guest上的第一个任务不能简单地工作,因为嵌套查询中同时存在user_id和distance。
我可以准确地把getDistance函数放在哪里,以便整个查询工作。或者是否有一种方法可以只从主查询的嵌套查询中选择user_id ?
SELECT guestId
FROM guest
WHERE user_id IN (
SELECT user_id, getDistance(lati, longi, ?, ?) as distance
FROM users
WHERE type = 'Guest'
HAVING (distance <= ?)
这是你想要的吗?
SELECT guestId
FROM guest
WHERE user_id IN (
SELECT user_id
FROM users
WHERE type = 'Guest'
AND getDistance(lati, longi, ?, ?) <= ?)
我计算了子查询内的distance
并将其重定向到外部选择,在那里您可以使用having
并返回user_id
。
另外,需要一个组by,我可能将其设置为user_id。
SELECT guestId
FROM guest
WHERE user_id IN (
SELECT user_id
FROM
(
SELECT user_id,getDistance(lati, longi, ?, ?) as distance
FROM users
WHERE type = 'Guest'
) T1
GROUP BY user_id
HAVING (distance <= ?))