我在MySQL中有一個多對多的關係,users
表和posts
表通過第三個post_user
表連接。根據MySQL中連接表的派生值選擇單行
這些帖子是在特定位置製作的,經緯度值會記錄在每個帖子的旁邊。
我想檢索所有用戶,併爲每個用戶他們的帖子是最接近給定點(在下面的示例中,座標43.429124/-0.294401)。我只希望爲每個用戶提供一個帖子(他們會有很多)。
我已經看過類似的問題/答案,並嘗試過各種查詢,但還沒有能夠拿出一個工作很正確。
我目前最好的努力是這個..
SELECT *, (acos(cos(radians(43.429124)) * cos(radians(posts.lat)) * cos(radians(posts.long) - radians(-0.294401)) + sin(radians(43.429124)) * sin(radians(posts.lat)))) AS xdistance
FROM users
INNER JOIN post_user ON users.id = post_user.user_id
INNER JOIN posts ON posts.id = post_user.post_id
INNER JOIN (
SELECT id, MIN(acos(cos(radians(43.429124)) * cos(radians(posts.lat)) * cos(radians(posts.long) - radians(-0.294401)) + sin(radians(43.429124)) * sin(radians(posts.lat)))) AS distance
FROM posts
GROUP BY posts.id
) subposts on posts.id = post_user.post_id AND xdistance = subposts.distance
看到同樣的方式來計算:[我爲什麼要對什麼似乎提供了一個MCVE我是一個非常簡單的SQL查詢?](https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-tobe -a-very-simple-sql-query) – Strawberry
那麼問題是什麼? –