ona到很多关系最后记录错误因为null date

时间:2017-08-31 08:01:54

标签: mysql relational-database one-to-many

在表帐户和accounts_prop上有一对多的关系我尝试获取具有最后日期(bis)的帐户的最后一个属性,

使用以下查询返回记录但是当日期等于0000-00-00时出现问题,则前日期计算为最大日期

SELECT  c.account_id, p.bis
FROM    accounts as c INNER JOIN
        (
            SELECT  account_id,
                    MAX(bis) MaxDate
            FROM   accounts_prop
            where accounts_prop.bis != 0
            GROUP BY account_id
        ) MaxDates ON c.account_id = MaxDates.account_id INNER JOIN
       accounts_prop p ON   MaxDates.account_id = p.account_id
                    AND MaxDates.MaxDate = p.bis

如何排除最后一个日期与0000-00-00

相等的记录

1 个答案:

答案 0 :(得分:0)

我假设你有一个DATE数据类型

来自MySQL Doc B.5.4.2 Problems Using DATE Columns

  

特殊的“零”日期' 0000-00-00'可以存储和检索为   ' 0000-00-00&#39 ;.当一个' 0000-00-00' date通过Connector / ODBC使用,   它会自动转换为NULL,因为ODBC无法处理它   日期

我建议您为子查询尝试以下操作之一:

SELECT  account_id,
        MAX(bis) MaxDate
FROM   accounts_prop
where accounts_prop.bis > '0000-00-00'            
GROUP BY account_id

SELECT  account_id,
        MAX(bis) MaxDate
FROM   accounts_prop
where accounts_prop.bis IS NOT NULL            
GROUP BY account_id