问题描述
我正在尝试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
以上返回错误“截断了错误的DOUBLE值”。是的,我已经在包括stackoverflow在内的许多地方进行了查询,并且了解了它的含义,但在这种情况下除外。
好的,所以我认为我根本不会使用“客户”。没问题。我会告诉它使用WHERE'Customer'NOT NOT NULL来搜索'Customer'不为null的时间。这给了我这张图像,它显示所有内容为空以及正在寻找的记录。 pic of db when not null
我在这里想念什么?
解决方法
您的WHERE
逻辑属于HAVING
子句:
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
子句可能是有效的MySQL:
WHERE 'Customer' > 0
但是,这会检查字符串文字'Customer'
是否大于值0。它实际上不会检查客户案例表达式的值,直到之后分组。