我正在尝试使用 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' IS NOT NULL 来搜索“Customer”何时不为空。这给了我这个图像,它显示所有空内容和我正在寻找的记录。不为空时的数据库图片 https://i.stack.imgur.com/NnbPL.png
我在这里缺少什么?
Your WHERE
逻辑属于HAVING
clause:
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。它确实not实际上检查客户案例表达式的值,该值甚至在分组发生后才可用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)