在空 JOIN 值上切换 sql 列
toggle sql column on null JOIN value
所以我查询了一个名为 markers 的 table,我在其中加入了一个 table,其中包含对这些标记的编辑以及 select 来自 table 的最新编辑( table 姓名:content_edits)。但是,并非所有标记都有编辑(并且 return 因此 return 在查询中为空)所以我想默认为创建标记的日期。此查询正确地获取了这两个日期值,但我希望将它们放在一个列名称中,以便我可以将该列排序为 return 最近的日期。
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
和 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 )
所以我查询了一个名为 markers 的 table,我在其中加入了一个 table,其中包含对这些标记的编辑以及 select 来自 table 的最新编辑( table 姓名:content_edits)。但是,并非所有标记都有编辑(并且 return 因此 return 在查询中为空)所以我想默认为创建标记的日期。此查询正确地获取了这两个日期值,但我希望将它们放在一个列名称中,以便我可以将该列排序为 return 最近的日期。
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
和 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 )