使用 MAX 函数将 NULL 转换为有意义的值 - mySQL
Convert NULL into meaningful value with MAX function - mySQL
任何人都可以帮助我解决 mySQL 中令人难以置信的令人沮丧的代码行。
这是这个案例的延续:
该示例中提供的代码可以工作,但现在我要进入生产环境,有一行我无法正常工作。我怀疑这是由于 max 子句中的 NULL 值造成的,但我不确定如何解决。
我希望麻烦的行是:
MAX(case when `meta_key`='key1' and (`meta_value`='Validated' or `meta_value` is null) then 'Validated' else 'Not Validated' end) as `key1`
即,NULL = 已验证;已验证 = 已验证;其他 = 未验证。
已更新
看来问题是 null
不是由值为 null 的对应键|值引起的,而是 不是 对应的键|值对用户。这会产生奇怪的结果。
以下似乎符合您的要求:
IFNULL(MAX(CASE WHEN `meta_key`='key1' AND `meta_value`<>'Validated' THEN'Not Validated' END),
'Validated') as `key1`
我在这里颠倒了你的逻辑,所以任何具有 key1
值但未经验证的东西都会 return Not Validated
,其他任何东西都会 return NULL
。然后我使用 IFNULL()
将所有 NULL
替换为 Validated
任何人都可以帮助我解决 mySQL 中令人难以置信的令人沮丧的代码行。
这是这个案例的延续:
该示例中提供的代码可以工作,但现在我要进入生产环境,有一行我无法正常工作。我怀疑这是由于 max 子句中的 NULL 值造成的,但我不确定如何解决。
我希望麻烦的行是:
MAX(case when `meta_key`='key1' and (`meta_value`='Validated' or `meta_value` is null) then 'Validated' else 'Not Validated' end) as `key1`
即,NULL = 已验证;已验证 = 已验证;其他 = 未验证。
已更新
看来问题是 null
不是由值为 null 的对应键|值引起的,而是 不是 对应的键|值对用户。这会产生奇怪的结果。
以下似乎符合您的要求:
IFNULL(MAX(CASE WHEN `meta_key`='key1' AND `meta_value`<>'Validated' THEN'Not Validated' END),
'Validated') as `key1`
我在这里颠倒了你的逻辑,所以任何具有 key1
值但未经验证的东西都会 return Not Validated
,其他任何东西都会 return NULL
。然后我使用 IFNULL()
将所有 NULL
替换为 Validated