我一直在努力为woocommerce整理一个SQL查询,它可以抓取并组织woocommerce_order_itemmeta
表中的所有数据。
我根据用于获取重力形式哈希值的类似查询拼凑了以下内容:
SELECT order_item_id AS entryId,
(
SELECT meta_value
FROM wp_woocommerce_order_itemmeta
WHERE meta_key = 'Name'
AND order_item_id = entryId LIMIT 1
) AS 'Full Name',
(
SELECT meta_value
FROM wp_woocommerce_order_itemmeta
WHERE meta_key = 'Email'
AND order_item_id = entryId LIMIT 1
) AS 'User Email',
(
SELECT meta_value
FROM wp_woocommerce_order_itemmeta
WHERE meta_key = 'Address'
AND order_item_id = entryId LIMIT 1
) AS 'User Address'
FROM wp_woocommerce_order_itemmeta
WHERE meta_value IS NOT NULL
GROUP BY entryId
ORDER BY entryId
似乎运行良好。我通过MySQL运行它,我得到了我需要的结果,但我还得到了许多行,只有NULL
值。
有没有办法使用上述查询过滤掉仅NULL
值的行?
答案 0 :(得分:0)
我可能会弄错,但也许像这样的结构会更好地满足你的需求。
SELECT oim.order_item_id AS entryId
, GROUP_CONCAT(DISTINCT CASE meta_key WHEN "Name" THEN meta_value ELSE NULL END) AS `Full Name`
, GROUP_CONCAT(DISTINCT CASE meta_key WHEN "Email" THEN meta_value ELSE NULL END) AS `User Email`
[, etc....]
FROM wp_woocommerce_order_itemmeta AS oim
GROUP BY entryId
ORDER BY entryId
;
与大多数聚合函数一样, GROUP_CONCAT
忽略空值(仅当遇到的所有值都为null时,结果才变为null)。
过滤掉完全无效的结果;您正在寻找HAVING
。