gpt4 book ai didi

mysql - 外部应用的替代方案

转载 作者:行者123 更新时间:2023-11-29 07:19:26 25 4
gpt4 key购买 nike

这是我的 table

create table #vehicles (vehicle_id int, sVehicleName varchar(50))

create table #location_history ( vehicle_id int, location varchar(50), date datetime)

insert into #vehicles values
(1, 'MH 14 aa 1111'),
(2,'MH 12 bb 2222'),
(3,'MH 13 cc 3333'),
(4,'MH 42 dd 4444')

insert into #location_history values
( 1, 'aaa', getdate()),
( 1, 'bbb' , getdate()),
( 2, 'ccc', getdate()),
( 2, 'ddd', getdate()),
(3, 'eee', getdate()),
( 3, 'fff', getdate()),
( 4, 'ggg', getdate()),
( 4 ,'hhh', getdate())

这是我在 SQL Server 中执行的查询。

select v.sVehicleName as VehicleNo, ll.Location
from #vehicles v outer APPLY
(select top 1 Location from #location_history where vehicle_id = v.vehicle_id
) ll

这是 SQL Server 中的输出。

  VehicleNO|Location
MH14aa1111 | aaa
MH12bb2222 | ccc
MH13cc3333 | eee
MH42dd4444 |ggg

我想在 MySQL 中执行这个。我想要与上面提到的相同的输出。

最佳答案

首先,SQL Server 查询实际上没有意义,因为您使用的 top 没有 order by

大概,您的意图是这样的:

select v.sVehicleName as VehicleNo, ll.Location
from #vehicles v outer APPLY
(select top 1 Location
from #location_history
where vehicle_id = v.vehicle_id
order by ?? -- something to indicate ordering
) ll;

您需要一种方法来获取每辆车的最新记录。在正常情况下,我认为 date 会包含此信息 - 但是,在您的示例数据中情况并非如此。

假设date确实包含唯一值,那么你可以这样做:

select v.sVehicleName as VehicleNo, ll.Location
from vehicles v join
location_history lh
using (vehicle_id)
where lh.date = (select max(lh2.date)
from location_history lh2
where lh2.vehicle_id = lh.vehicle_id
);

否则,您可以使用相关子查询执行您想要的操作。但是,这将返回最近日期的任意匹配值:

select v.sVehicleName as VehicleNo,
(select ll.Location
from location_history lh2
where lh2.vehicle_id = lh.vehicle_id
order by date desc
limit 1
) as location
from vehicles v ;

关于mysql - 外部应用的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36716183/

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