我有四个表格,分别是分配表、用户表、车辆表和燃料表。我想做一个查询,返回唯一的行(也就是说,除了users表之外,每个表应该只有一个唯一的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
如何使用这些表从数据库中获取最后一个条目?
5条答案
按热度按时间vd8tlhqk1#
请尝试以下代码并限制:
4nkexdtk2#
有什么问题,请留言。
uplii1fm3#
我推测你想要的是以下几点:
这个查询只是对一个子查询进行一个附加的连接,该子查询为每辆车查找最近的日期。这将通过删除每辆车的所有非最新记录来限制您当前的查询。
请注意,我已将旧式隐式联接转换为显式内部联接。这是目前编写sql查询的首选方法。
ulydmbyx4#
如果您的表以id作为主键,那么上面的sql将起作用。
oyt4ldly5#
我不认为这是你现在想要的,但我只想在下次你创建数据库时把它扔到那里。这件事很容易解决拉威尔在它的方法。只需创建两个数据库字段
created_at
以及updated_at
.这两个字段都是时间戳和
created_at
创建项目时更新updated_at
当试图更新数据库中的任何字段时更新。通过这种方式,您可以在创建或更新数据库时获取数据库中的最新记录。由于两个时间戳相互碰撞的可能性很小甚至没有,所以几乎总是会得到一个结果。您还可以根据创建或更新的时间戳按这种方式对记录进行排序。