外部適用を使用したSQLサーバーでのクエリがあります。今私はそれがSQLサーバーとMySQLでもクエリを実行できるように変換したい。SQL Serverでの外部適用の代替方法
select top 5 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
私は両方のデータベースで実行できるようにこのクエリを隠匿する必要があります。
これは私のテーブル
がテーブル#vehicles(vehicle_id int型、sVehicleName VARCHAR(50))を作成することです
テーブル#location_history(vehicle_id int型、場所はvarchar(50)、日付日時)
を作成#vehicles 値BB 22
(1 'MH 14 AA 1111')、
(2 'MH 12に挿入22 ')、
(3' MH 13 CC 3333 ')、
(4、' DD 4444' MH 42)
#location_history値
(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サーバーで実行するクエリです。
VehicleNoとしてv.sVehicleNameを選択し、#vehiclesからll.Location
は、LL(#location_history vehicle_id = v.vehicle_idからトップ1場所 を選択)を適用
外側
をV
これはSQLサーバーに出力されます。
VehicleNo場所
MH14のAA 1111 AAA
MH12のBB 2222 CCC
MH13のCC 3333 EEE
MH42 ddの4444 GGG
私は、MySQLでこれを実行する。上記の同じ出力が必要です。
テーブルデータと予想される出力を追加できますか?車両テーブル内に – bmsqldev
が2列あるlocation_historyにvehicle_id、vehicle_nameが2列あるvehicle_id、location、location history table内の日付各車両に複数のエントリが存在する可能性がある – suraj
存在する各車両の位置履歴テーブルから最初のレコードを取得する車両テーブル。 – suraj