【发布时间】:2022-01-20 22:59:05
【问题描述】:
我正在尝试从我的表中选择具有最新日期的附加值“状态”,但前提是左连接表对象可见。每个物业和单位只有一次。 到目前为止我做了什么:
SELECT propertyUnitEnergyStates.id,
propertyUnitEnergyStates.property_id,
propertyUnitEnergyStates.unit_id,
propertyUnitEnergyStates.type,
propertyUnitEnergyStates.state,
propertyUnitEnergyStates.date,
propertyUnits.visible
FROM propertyUnitEnergyStates
LEFT JOIN propertyUnits
ON propertyUnits.property_id = $propertyID
WHERE propertyUnitEnergyStates.property_id = $propertyID
AND propertyUnitEnergyStates.type = '$name'
AND propertyUnits.visible = 1
GROUP BY propertyUnitEnergyStates.unit_id
ORDER BY propertyUnitEnergyStates.date DESC
我现在得到的是每个 propertyUnits.visible 为 1 的结果。即使在表中设置为零。
来自 propertyUnits 的对象。如您所见,可见值为 0,但我得到 1。
现在我注意到,我想成为最新的“状态”值不是最新的。
如您所见,我的结果中 unit_id 5 值为 853,但表中的 propertyUnitEnergyStates 是最新值 400。
【问题讨论】:
-
请将数据发布为文本而不是图像。
-
我明白了。首先,order by 子句在 group by 子句之后执行。所以......你不能从这个查询中得到最新的状态。您必须在离开加入之前获得最新状态。让我检查一下。