Mysql 在空联接值上切换sql列

Mysql 在空联接值上切换sql列,mysql,sql,sql-server,join,case,Mysql,Sql,Sql Server,Join,Case,因此,我查询了一个名为markers的表,在该表中我加入了一个包含这些标记的编辑的表,并从表中选择最近的编辑(表名:content\u edits)。但是,并非所有标记都有编辑(因此在查询中返回null),因此我希望默认为创建标记的日期。这个查询正确地获取了这两个日期值,但我希望它们在一个列名中,这样我就可以对列进行排序以返回最近的日期 SELECT m.id, m.name, m.description, m.directions, m.type, m.date_create, ce.date

因此,我查询了一个名为markers的表,在该表中我加入了一个包含这些标记的编辑的表,并从表中选择最近的编辑(表名:content\u 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”的味道,但我不太清楚这会发生什么,也不知道正确的语法


衷心感谢您的帮助。非常感谢。

您可以使用
案例
为空
检查:

CASE WHEN ce.date_decide IS NULL THEN m.date_create ELSE ce.date_decide END
如果您使用的是SQL Server 2012及更高版本(您有
SQL Server
tag),您可以使用
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 )

非常感谢。在mySQL上。这段代码是在哪里添加的?在语句末尾。@ambe5960:不是
m.date\u create,而是ce.date\u decision
。而且,很高兴能帮助你。)效果很好。谢谢你的帮助。非常感谢。