【问题标题】:MySQL Max(isnull(date_field)) or max(coalesce(date_field))MySQL Max(isnull(date_field)) 或 max(coalesce(date_field))
【发布时间】:2011-09-30 23:34:49
【问题描述】:

我有一个查询从父/子关系读取日期,我 需要按日期的最大值对记录进行分组,从哪个开始 桌子来了。我的查询:

SELECT child.id as id, 
       MAX(pm.start), 
       MAX(membership.start),
       MAX(IFNULL(pm.start,membership.start)) AS start 
FROM   organisation child
LEFT JOIN organisation pmorg ON child.parent_organisation_id = pmorg.id
LEFT JOIN membership ON child.id = membership.organisation_id
LEFT JOIN membership pm ON pmorg.id = pm.organisation_id

WHERE child.id IN (1,3) AND /*just look at example records*/

    coalesce(pm.start,membership.start) IS NOT NULL AND
    ((membership.active = 1 AND membership.amount_paid > 0.00 ) OR
     (pm.active = 1 AND pm.amount_paid > 0.00))

GROUP BY child.id

我的输出很奇怪:

1       NULL                    2011-07-01 00:00:00 323031312d30372d30312030303a30303a3030
3       2011-07-01 00:00:00     NULL                323031312d30372d30312030303a30303a3030

我需要最后一列是 2011-07-01,我需要两行。任何 知道为什么 max(coalesce()) 不起作用?我正在运行 MySQL 5.1

【问题讨论】:

  • 不应该是coalesce(max(date), max(otherdate))吗?
  • 感谢 bfavaretto,我认为在这种情况下它也可以工作

标签: mysql group-by max coalesce


【解决方案1】:

愚蠢的是,这个查询只在 PHPMyAdmin 中中断,并且在 mysql 命令行中完全正常。所以这里完全没有问题!

【讨论】:

  • 您应该尝试使用普通的 GUI 客户端,例如 MySQL Workbench 或 Sequel Pro(仅限 Mac)或 Navicat(非 FOSS):-)
猜你喜欢
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 2016-10-03
  • 2013-12-26
  • 2017-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多