mysql - mysq:在 FROM 和 WHERE 子句中使用相同的子查询而不重复?
问题描述
我需要选择车间中所有最长的汽车的数据。因此,如果最多天数是 16 天并且有多辆汽车有 16 天,我需要所有这些汽车。
我的模型是这样的
汽车:id_car、mat_car、mod_car、颜色、类型
期间:id_per、date_ini、date_fin
Relacion4 : id_car, id_per
此方法有效,但有没有办法在 FOR 和 WHERE 子句中不重复相同的子查询?
select * from (
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
) as CarWithDurr
where daysInWorkshop = (
select max(daysInWorkshop) from (
select 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 = Period.id_per
) as CarWithDurr
);
解决方案
我觉得你可以瘦一点。
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_car 它不在您发布的表格中!AND Periodo 拼写错误。
推荐阅读
- wordpress - WordPress 生成的无效 HTML 代码(
WordPress 5.2.4
我正在尝试获取有效的 HTML。
验证器 ( https://validator.w3.org/ ) 显示了这一点:
- python - 如何将字典列表转换为excel
- python-3.x - 多层感知器的张量层动态模型如何更新模型的权重
- powershell - 从 TFSBuild.Proj 文件运行 powershell 脚本
- c# - 如何将一行文本添加到正在读取的文本文件中,C#
- r - 需要使用 mutate 和 if 创建将数据转换为因子级别的新列
- mysql - 如果选择输出行,则返回 1
- javascript - 在签名板下载的图像上修剪画布周围的空白区域
- java - 使用 listview 显示一堆数据并在 Android 中使用 parcelable 传递
- flutter - 将数据解析为有状态的小部件