mysql - 内部联接返回正确的最大日期,但不返回同一行中的其他字段

标签 mysql sql join max

我有以下数据库表(简化)

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/

相关文章:

java - 如何使用 SimpleDateFormat 转换日期?

php - 如何从 MySQL 中查询多个对应值并将它们轻松添加到一起?

mysql - 如果某行存在,如何将 MYSQL 列设置为特定值?

SQL插入错误-"Subquery returned more than 1 value"

MySQL 之间通过使用替换

同一表中的Mysql子查询COUNT返回NULL

php - mySQL 查询 WHERE...OR... 快捷方式

sql - Postgresql - 从对象数组中提取字段到文本数组

mysql - 在日期范围内运行总计 - 填写缺失的日期

sql - HSQLDB 从另一个表的字段更新一个表的字段