【发布时间】: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