mysql - 在空 JOIN 值上切换 sql 列

标签 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”,但我不太清楚这会去哪里或正确的语法。

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

最佳答案

您可以使用 CASEIS 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/

相关文章:

mysql - MySQL 中 Distinct 的对立面

php - 需要具有良好性能的 MYSQL 查询来更新和导入数据(如果不匹配条件则移动到另一个表)

python - 添加使用imdbpy加载imdb数据到mysql时捕获的外键异常

php 数组没有给出我期望的结果

mysql xdevapi nodejs : returning the inserted row auto_increment id

sql-server - Linq 查询可以从 Sql 数据库检索 BLOB 吗?

php - PHP 和 MySQL 的性能

sql - 将vba变量日期传递给sql语句

sql - 作为子查询一部分的 SQL 列的运行总计

SQL Server 将 xml 值读取为空字符串