我知道这个问题已被问了十几次,但我尝试了各自的解决方案,但没有一个解决我面临的问题。
我有以下查询:
SELECT mn.meter_name, m.meter_number, m.meter_location, r.rates_meter_rate,
r.rates_meter_PPD, m.meter_ID, mt.metertracking_periodend,
mt.metertracking_read, mt.metertracking_readend
FROM db_meters m, db_meters_name mn, db_rates_meter r, db_meters_tracking mt
WHERE m.ICP_ID = '$ICP' AND m.meter_name_ID = mn.meter_name_ID
AND r.meter_ID = m.meter_ID AND r.contract_ID = '$contract_ID'
AND mt.meter_ID = m.meter_ID
GROUP BY meter_ID
ORDER BY ABS( DATEDIFF( metertracking_periodend, NOW() ) )
但它并没有完全按照预期行事。 它希望它能显示当前日期的最新metertracking_periodend,但相反,由于每米的metertracking表有多个条目,它显示第一个插入。
我尝试将其更改为:
ORDER BY metertracking_periodend DESC
但是输出相同,它似乎是GROUP BY meter_ID的东西,我需要它,因为我只想要每米的最新结果,其中最多可以有四个。
因此,如果有人可以帮助我输出最新“metertracking_periodend”所订购的信息,我们将不胜感激。感谢。
编辑:输出
“metertracking_periodend”实际上有一个“2013-10-01”的条目,所以这应该是从表中获取的,而不是2012-12-31的旧条目。希望这个编辑有所帮助。
答案 0 :(得分:0)
试试这个:
SELECT mn.meter_name, m.meter_number, m.meter_location, r.rates_meter_rate,
r.rates_meter_PPD, m.meter_ID, mt.metertracking_periodend,
mt.metertracking_read, mt.metertracking_readend
FROM db_meters m, db_meters_name mn, db_rates_meter r, db_meters_tracking mt
WHERE m.ICP_ID = '$ICP' AND m.meter_name_ID = mn.meter_name_ID
AND r.meter_ID = m.meter_ID AND r.contract_ID = '$contract_ID'
AND mt.meter_ID = m.meter_ID
AND metertracking_periodend = (
select max(metertracking_periodend)
from db_meters_tracking
where meter_ID = mt.meter_ID
group by meter_ID
)
ORDER BY metertracking_periodend