2011-07-08 55 views
0

我有一個查詢從父/子關係讀取日期,我需要按日期的最大值對記錄進行分組,表來了。我查詢:MySQL Max(isnull(date_field))或max(coalesce(date_field))

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

+0

不應該是'coalesce(max(date),max(otherdate))'? – bfavaretto

+0

感謝bfavaretto,我認爲在這種情況下它也可以工作 – jdog

回答

0

愚蠢的是,這個查詢只在PHPMyAdmin中破解,並且在mysql命令行中完全正常工作。所以根本沒有問題!

+0

你應該嘗試像MySQL Workbench或Sequel Pro(僅限Mac)或Navicat(不是FOSS)的普通GUI客戶端:-) – prodigitalson