使用 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 的对应键|值引起的,而是 不是 对应的键|值对用户。这会产生奇怪的结果。

例如参见http://sqlfiddle.com/#!9/90f2d9/1

以下似乎符合您的要求:

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

Example on SQL Fiddle