我现在为问题的措辞道歉,不太清楚如何表达这一点。
我有以下MySQL查询:
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 = '227' AND m.meter_name_ID = mn.meter_name_ID AND r.meter_ID = m.meter_ID AND (r.rates_meter_start <= '2013-08-31' AND r.rates_meter_end >= '2013-08-31') AND mt.meter_ID = m.meter_ID ORDER BY ABS( DATEDIFF( metertracking_periodend, NOW() ) )
然后返回:
**meter_name meter_number meter_location rates_meter_rate rates_meter_PPD meter_ID metertracking_periodend metertracking_read metertracking_readend**
Anytime 9011656:1 in front office 0.15560 10.00 15 2013-07-31 685 69665
Anytime 9011656:2 in front office 0.09000 10.00 16 2013-07-31 293 1022
Anytime 9011656:1 in front office 0.15560 10.00 15 2013-06-30 589 68980
我想限制结果,使每个仪表只返回一次,所以在这种情况下米(ID)15&amp; 16
我希望有人可以提供帮助,并提前致谢。
答案 0 :(得分:0)
在您的陈述中使用Group by
:
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 = '227' AND m.meter_name_ID = mn.meter_name_ID AND r.meter_ID = m.meter_ID AND (r.rates_meter_start <= '2013-08-31' AND r.rates_meter_end >= '2013-08-31') AND mt.meter_ID = m.meter_ID group by meter_ID ORDER BY ABS( DATEDIFF( metertracking_periodend, NOW() ) )
答案 1 :(得分:-1)
好补充:
GROUP BY meter_ID
应该做的。
我不确定你的其他字段代表什么,以及你是否想要在查询中使用某种聚合函数,例如SUM()。