sql选择,获取每辆车的最新条目

时间:2010-11-19 01:21:36

标签: sql mysql database

我的数据库(MySql)有2个表

表1 - 包含每辆车的记录

cars = id(int),reg(int),type(int)

表2 - 包含每辆车的工作

jobs = id(int),date(date)

我需要一个SELECT命令,它将为我提供所有id

的最新工作

提前致谢。

4 个答案:

答案 0 :(得分:4)

你没有共享字段,你不能这样做。您需要将关联的car_id存储在每个作业中,或者具有jobs_to_cars表。

然后你会使用:

SELECT C.*, J.id, MAX(J.date)
FROM cars C 
INNER JOIN jobs J on J.car_id = C.id
GROUP BY C.id

如果job的id与car的id相同,那么将j.car_id更改为j.id,但是你在Jobs上缺少主键,我建议你开始制作。

答案 1 :(得分:2)

你可以使用这样的东西

SELECT c.*, MAX(j.date) date
FROM cars c 
   LEFT JOIN jobs j ON j.id = c.id
GROUP BY c.id
ORDER BY c.id

因为[jobs]中没有其他字段。如果汽车没有任何工作,日期将为NULL。

答案 2 :(得分:1)

    SELECT *
      FROM cars c
INNER JOIN (SELECT MAX(id) AS j_id
              FROM jobs
          GROUP BY car_id) x ON x.j_id = c.id
  1. 您忘记了jobs.car_id字段,该字段指定了哪个汽车作业属于
  2. 更优雅的方法是创建字段car.last_job_id并使用jobs表上的触发器维护它。
  3. 由于您的问题不明确,此查询也可以作为答案:

        SELECT j.*
          FROM jobs j
    INNER JOIN (SELECT MAX(id) id
                  FROM jobs
              GROUP BY car_id) x ON x.id = j.id
    

答案 3 :(得分:0)

你可以尝试

ORDER BY date DESC