mysql - 这个简单的 COALESCE 选择查询有什么问题? (mysql)

标签 mysql sql select coalesce null-coalescing-operator

我有这个问题:

SELECT
    COALESCE(CONCAT(Ar.usaf, '-', Ar.wban),"NONE") AS TABLE_NAME
FROM
    `metadata`.`ISH-HISTORY_HASPOS` A
 INNER JOIN `metadata`.`Artificial` Ar ON (Ar.id = A.mergeId)
WHERE
    A.usaf = usaf
AND A.wban = wban;

当没有连接发生并且结果为 NULL 时,我希望查询将空结果与“NONE”合并,但我仍然得到 NULL。 我如何才能返回“NONE”而不是 NULL?

我忽略了一个重点: usafwbanIN 存储过程 的变量。 这是我的最终(工作)版本。谢谢罗兰多

BEGIN
SET @usaf = usaf;
SET @wban = wban;

SELECT
    COALESCE(CONCAT(Ar.usaf, '-', Ar.wban),"NONE") AS TABLE_NAME
FROM
    `metadata`.`ISH-HISTORY_HASPOS` A
 INNER JOIN `metadata`.`Artificial` Ar ON (Ar.id = A.mergeId AND    A.usaf = @usaf AND A.wban = @wban)
LIMIT 1;

END

最佳答案

由于 where 子句,查询从不考虑 usaf 和 wban 的 NULL 值:

WHERE A.usaf = usaf AND A.wban = wban;

当这些列为 NULL 时,则该行被过滤掉。对于重言式 a.usaf = a.usaf 甚至也是如此。当 a.usaf 为 NULL 时,该语句返回 FALSE(好吧,NULL)。

删除 where 子句,查询可能会按预期工作。

作为第二条评论。 . .你想要一个inner join还是一个left outer join

关于mysql - 这个简单的 COALESCE 选择查询有什么问题? (mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13956157/

相关文章:

mysql - 如何在MySQL中使用嵌套循环连接而不是 block 嵌套循环连接?

mysql - 是否有任何 SQL 验证器可以针对多个数据库服务器检查语法?

mysql - 如何创建触发器以在更新该行时增加该列?

sql - 将城市名称与地址分开sql查询

javascript - 如何使用 JS 或 jQuery 选择每个元素?

android - ORMLite 使用谓词选择一些列

MySQL OR 条件不工作

mysql - 查找有多个相同的条目

mysql - 查询中的选择命令

javascript - 在 Javascript 中,如何将新选项添加​​到 Html Select 中,根据文本的字母顺序值插入