gpt4 book ai didi

mysql - 在同一个查询mysql中更新+排序

转载 作者:行者123 更新时间:2023-11-29 03:10:37 24 4
gpt4 key购买 nike

这是我的表结构:

表1:track_data

| device_id(foreign) | latitude | longitude | activity |

-存储 id、位置坐标、事件是它们被插入的时间。


表2:用户设备

| device_id(primary) | park_lat | park_long |

Stores id, park_lat/park_long 需要根据请求从 track_data 表中存储纬度/经度(即最新的事件数据)。现在,我将如何在单个查询中将最新的纬度/经度从 Table1 存储到 Table2。这可能吗,要在同一个查询中混合选择和更新?

现在我的非功能性直观查询:)

UPDATE user_devices,track_data
SET user_devices.park_lat = latitude,user_devices.park_long = longitude
WHERE user_devices.id='33' AND track_data.activity=(SELECT activity FROM track_data
ORDER BY track_data.activity DESC LIMIT 1)

最佳答案

update user_devices 
join (select device_id, latitude, longitude, activity
from (select device_id, latitude, longitude, activity
from track_data order by device_id, activity desc) x
group by device_id) latest_lat_long on latest_lat_long.device_id = user_devices.device_id
set
park_lat = latest_lat_long.latitude,
park_long = latest_lat_long.longitude;

这是如何工作的:

  • 最内层的查询顺序为device_id 然后activity latest 在前
  • 下一层只获取每个 device_id 的第一条记录(最新的,因为我们是这样排序的)
  • 然后我们将其加入到我们的表中,这样我们只需要传递一次 track_data
  • 最后我们更新列

这个查询会执行得很好,因为它不像某些人本能地那样对每行进行查询。

关于mysql - 在同一个查询mysql中更新+排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9003154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com