[英]Getting The Most Recent Entry From The Database
我有四個表,用於分配 , 用戶 , 車輛和燃料 。 我想查詢返回唯一行的查詢(也就是說,除了用戶表外,每個表都應該只有一個唯一ID)。
我希望查詢返回最新的條目(如同類的最后一個條目)。
我當前的查詢在下面,但它返回找到的第一行,而不是同類的最后一行
Select distinct
v.vname,
v.year,
v.make,
v.model,
v.vid,
v.fueltype,
f.fID,
f.meter,
f.date,
a.driverID,
a.dateassigned,
u.uid,
u.name,
u.surname
from
vehicles as v,
assigns as a,
users as u,
fuel as f
where
v.vid = a.vID
and
a.driverID = u.id
and
v.vid = f.vID
group by
v.vid
order by
f.date desc
如何使用這些表從數據庫中獲取最后一個條目?
嘗試使用以下代碼進行限制:
Select distinct
v.vname,
v.year,
v.make,
v.model,
v.vid,
v.fueltype,
f.fID,
f.meter,
f.date,
a.driverID,
a.dateassigned,
u.uid,
u.name,
u.surname
from
vehicles as v,
assigns as a,
users as u,
fuel as f
where
v.vid = a.vID
and
a.driverID = u.id
and
v.vid = f.vID
group by
v.vid
order by
f.date desc
limit 1
Select distinct
v.vname,
v.year,
v.make,
v.model,
v.vid,
v.fueltype,
f.fID,
f.meter,
f.date,
a.driverID,
a.dateassigned,
u.uid,
u.name,
u.surname from vehicles as v,
assigns as a,
users as u,
fuel as f where v.vid = a.vID and
a.driverID = u.id and v.vid = f.vID
group by v.vid
order by f.date desc
limit 1
如有任何問題,請發表評論。
Select
v.vname,
v.year,
v.make,
v.model,
v.vid,
v.fueltype,
f.fID,
f.meter,
f.date,
a.driverID,
a.dateassigned,
u.uid,
u.name,
u.surname
from
vehicles as v,
assigns as a,
users as u,
fuel as f
where
v.vid = a.vID
and
a.driverID = u.id
and
v.vid = f.vID
order by
v.id desc
limit 1
如果您的餐桌車使用ID作為主鍵,那么上面的SQL將起作用。
我不認為這是您現在想要的,但我只想在下次創建數據庫時將其扔在那里。 laravel可以輕松解決此問題。 只需創建兩個數據庫字段created_at
和updated_at
。
當您創建項目時,這兩個字段都是時間戳和created_at
更新,而當您嘗試更新數據庫中的任何字段時, updated_at
更新。 這樣,您可以在創建或更新數據庫的數據庫上獲取最新記錄。
由於幾乎沒有兩個時間戳相互沖突的機會,因此您幾乎總是會得到一個結果。 您還可以根據創建或更新的時間戳以這種方式對記錄進行排序。
我推測您想要的是以下內容:
SELECT
v.vname,
v.year,
v.make,
v.model,
v.vid,
v.fueltype,
f1.fID,
f1.meter,
f1.date,
a.driverID,
a.dateassigned,
u.uid,
u.name,
u.surname
FROM vehicles v
INNER JOIN assigns a
ON v.vid = a.vID
INNER JOIN users u
ON a.driverID = u.id
INNER JOIN fuel f1
ON v.vid = f1.vID
INNER JOIN
(
SELECT vID, MAX(date) AS max_date
FROM fuel
GROUP BY vID
) f2
ON f1.vID = f2.vID AND f1.date = f2.max_date
ORDER BY
f1.date DESC;
該查詢只是對子查詢進行附加聯接,該子查詢為每輛車查找最新日期。 這會通過刪除每輛車的所有非最新記錄來限制當前查詢。
請注意,我已將您的舊式隱式聯接轉換為顯式內部聯接。 最近,這是編寫SQL查詢的首選方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.