Sql WHERE子句大于零,在使用CASE函数时仍然显示零

Sql WHERE子句大于零,在使用CASE函数时仍然显示零,sql,null,pivot,where-clause,having-clause,Sql,Null,Pivot,Where Clause,Having Clause,我正在尝试WHERE子句来过滤掉我不想要的其他数据 SELECT `post_id`, MAX(CASE WHEN `meta_key` = 'vlaue_1' THEN `meta_value` ELSE NULL END) as 'Customer', MAX(CASE WHEN `meta_key` = 'value_2' THEN `meta_value` ELSE NULL END) as 'DeliveryDate', MAX(CASE

我正在尝试WHERE子句来过滤掉我不想要的其他数据

SELECT `post_id`,
       MAX(CASE WHEN `meta_key` = 'vlaue_1' THEN `meta_value` ELSE NULL END) as 'Customer',
       MAX(CASE WHEN `meta_key` = 'value_2' THEN `meta_value` ELSE NULL  END) as 'DeliveryDate',
        MAX(CASE WHEN `meta_key` = 'value_3' THEN `meta_value` ELSE NULL  END) as 'DeliveryTime',
         MAX(CASE WHEN `meta_key` = 'vlaue_4' THEN `meta_value` ELSE NULL  END) as 'DeliveryType'
FROM wp_postmeta 
WHERE 'Customer' > 0
GROUP BY `post_id`  
ORDER BY `wp_postmeta`.`post_id` ASC
上面返回了错误“截断的不正确的双精度值”。是的,我查了很多地方,包括stackoverflow,并且理解了它的含义,除了在这个例子中没有

好的,所以我想我根本不用“客户”这个词。没问题。我将告诉它在“Customer”不为null时使用WHERE“Customer”不为null搜索。这给了我这个图像,它显示了所有的空值和我正在寻找的记录。


我在这里遗漏了什么?

您的
逻辑属于
子句:

SELECT
    post_id,
    MAX(CASE WHEN meta_key = 'vlaue_1' THEN meta_value END) AS Customer,
    MAX(CASE WHEN meta_key = 'value_2' THEN meta_value END) AS DeliveryDate,
    MAX(CASE WHEN meta_key = 'value_3' THEN meta_value END) AS DeliveryTime,
    MAX(CASE WHEN meta_key = 'value_4' THEN meta_value END) AS DeliveryType
FROM wp_postmeta 
GROUP BY post_id
HAVING Customer > 0
ORDER BY post_id;
请注意,您当前的
WHERE
子句在技术上可能是有效的:

WHERE 'Customer' > 0

但是,这将检查字符串literal
'Customer'
是否大于值0。它实际上不会检查customer case表达式的值,该表达式在group by发生后才可用。

谢谢。既然它正在创建“客户”,那么在对数据进行分组后提取数据的解决方案是什么?使用我的答案?不知道我还能说些什么…看起来确实起作用了,所以我想这不是一个问题,它只是在拉动所有东西之前检查绳子?这似乎确实妨碍了我们按订单。这有意义吗?感谢您在回答中提供的持续帮助,
having
应该是
where
。问题出在哪里,不能与函数子句一起使用。现在的问题是,为什么在这里,为什么ORDERBY条款没有效力