Mysql mysq:在FROM和WHERE子句中使用相同的子查询而不重复它?
我需要选择车间中最长的所有车辆的数据。因此,如果最大天数为16天,并且有多辆车有16天,我需要所有这些车 我的模特是这样的 汽车:id车、mat车、mod车、颜色、类型 期间:id\u per、日期\u ini、日期\u fin 关系4:身份证,身份证 这个方法可以工作,但是有没有一种方法可以不在FOR和WHERE子句中重复相同的子查询就可以工作呢 从中选择* 从汽车中选择Car.mat\u Car、mod\u Car、颜色、类型、日期ini、日期fin、日期diffdate\u fin、日期ini daysInWorkshop 轿厢上的内部连接继电器4.mat_轿厢=继电器4.mat_轿厢 Relacion4.id\u per上的内部连接周期=Periodo.id\u per 卡维杜尔 其中daysInWorkshop= 从中选择maxdaysInWorkshop 从汽车中选择datediffdate\u fin,date\u ini Days in车间 轿厢上的内部连接继电器4.mat_轿厢=继电器4.mat_轿厢 Relacion4.id\u per上的内部联接周期=Period.id\u per 卡维杜尔 ;Mysql mysq:在FROM和WHERE子句中使用相同的子查询而不重复它?,mysql,database,Mysql,Database,我需要选择车间中最长的所有车辆的数据。因此,如果最大天数为16天,并且有多辆车有16天,我需要所有这些车 我的模特是这样的 汽车:id车、mat车、mod车、颜色、类型 期间:id\u per、日期\u ini、日期\u fin 关系4:身份证,身份证 这个方法可以工作,但是有没有一种方法可以不在FOR和WHERE子句中重复相同的子查询就可以工作呢 从中选择* 从汽车中选择Car.mat\u Car、mod\u Car、颜色、类型、日期ini、日期fin、日期diffdate\u fin、日期i
我想你可以瘦一点
select Car.mat_car, mod_car, color, type,
date_ini, date_fin, datediff(date_fin, date_ini) daysInWorkshop
from Car
inner join Relacion4 on Car.mat_car = Relacion4.mat_car
inner join Period on Relacion4.id_per = Periodo.id_per
where datediff(date_fin, date_ini) =
(
select max(datediff(date_fin, date_ini))
from Period
)
;
如果这不符合您的意愿,请将示例数据和预期输出作为文本添加到问题中
顺便说一句,你从哪里得到Relacion4.mat_车?它不在你发布的表格中!!Periodo拼写错误。您可以创建一个视图。或者也许有一种方法可以优化这个查询。你不需要加入relacion4和car来获得最长天数。但是你需要在where中重复一些。不过,select*from是不必要的。