我的数据库(MySql)有2个表
表1 - 包含每辆车的记录
cars = id(int),reg(int),type(int)
表2 - 包含每辆车的工作
jobs = id(int),date(date)
我需要一个SELECT命令,它将为我提供所有id
的最新工作提前致谢。
答案 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
jobs.car_id
字段,该字段指定了哪个汽车作业属于car.last_job_id
并使用jobs
表上的触发器维护它。由于您的问题不明确,此查询也可以作为答案:
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