我有以下数据库表(简化)
statistics_meter
id | mpan_number
1 | 12345678
2 | 87654321
statistics_contract
id | contract_end_date | meter_id | supplier
1 | 2014-01-10 | 1 | British gas
2 | 2013-12-01 | 1 | Southern Electric
3 | 2014-03-01 | 2 | EON
我的查询旨在获取给定仪表的最近契约(Contract)结束日期,并将其与供应商一起返回。我已编写查询并返回正确的契约(Contract)结束日期但是供应商从上一份契约(Contract)返回 - 因此返回跨两行的数据,而不仅仅是一行。
例如我明白了
2014-01-10|Southern Electric
..不正确。
我的查询:
SELECT
statistics_meter.mpan_number AS mpanNumber,
MAX(statistics_contract.contract_end_date) AS contractEndDate,
statistics_contract.supplier AS supplierName
FROM statistics_contract
INNER JOIN statistics_meter
ON statistics_meter.id=statistics_contract.meter_id
GROUP BY statistics_contract.meter_id
提前感谢您的帮助
最佳答案
您可以使用此 SQL 查询
SELECT
statistics_meter.mpan_number AS mpanNumber,
s.contract_end_date AS contractEndDate,
s.supplier AS supplierName
FROM statistics_contract AS s
INNER JOIN statistics_meter
ON statistics_meter.id=s.meter_id
WHERE s.contract_end_date = (
SELECT MAX(contract_end_date)
FROM statistics_contract AS sc
WHERE sc.meter_id=s.meter_id
)
关于mysql - 内部联接返回正确的最大日期,但不返回同一行中的其他字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21285497/