在null JOIN值上切换sql列

时间:2015-04-06 20:54:17

标签: mysql sql sql-server join case

所以我查询一个名为markers的表,我加入一个包含这些标记编辑的表,并从表中选择最近的编辑(表名: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

我认为答案会有一些' IF null THEN m.date_create`,但我不知道这会发生什么,也不知道正确的语法。

真诚地感谢您的帮助。非常感谢。

1 个答案:

答案 0 :(得分:2)

您可以CASE使用IS NULL检查:

CASE WHEN ce.date_decide IS NULL THEN m.date_create ELSE ce.date_decide END

如果您使用的是SQL 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 )