因此,我查询一个称为标记的表,其中我连接到一个包含这些标记编辑的表,并从表中选择最新的编辑(表名: content_edits)。但是,并不是所有标记都有编辑(并返回查询中返回null ),所以我想默认到创建标记的日期。这个查询正确地获取了这两个日期值,但是我希望它们在一个列名中,这样我就可以对列进行排序以返回最近的日期。
SELECT m.id, m.name, m.description, m.directions, m.type, m.date_create, ce.date_decide
FROM markers AS m
LEFT OUTER JOIN (
SELECT entity_id, entity_type, max(date_decide) as date_decide
FROM content_edits
WHERE status=1
GROUP BY entity_id, entity_type) ce ON ce.entity_id=m.id
LIMIT 500我想答案应该是‘如果null那么m.date_create`,但是我不太清楚这会发生在哪里,也不知道正确的语法。
衷心感谢您的帮助。我们对此深表感谢。
发布于 2015-04-06 21:00:27
您可以将CASE与IS NULL检查结合使用:
CASE WHEN ce.date_decide IS NULL THEN m.date_create ELSE ce.date_decide END如果您正在使用Server 2012及更高版本(您有sql-server标记),您可以使用iif函数:
IIF( ce.date_decide IS NULL, m.date_create, ce.date_decide )由于您的问题也被标记为mysql,所以您可以使用if:
IF( ce.date_decide IS NULL, m.date_create, ce.date_decide )https://stackoverflow.com/questions/29479521
复制相似问题