所以我查询了一个名为 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”,但我不太清楚这会去哪里或正确的语法。
真诚感谢您的帮助。非常感谢。
最佳答案
您可以使用 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 )
关于mysql - 在空 JOIN 值上切换 sql 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29479521/