我一直在试图为woocommerce组织一个SQL查询,它抓取并组织woocommerce_order_itemmeta
表中的所有数据。SQL子查询返回空值行
我拼凑起来的基础上用于抓取重力类似的查询如下形式的散列值:
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
值的行?
您正在检查where子句中的空值,但那是在您已经加入所有内容之后。添加meta_value对于每个联接都不为NULL的地方应该修复它。不确定在mysql中是否有更好的方法。 –
添加'where ...和entryId不为空'。另外它不应该有可能具有多个空'entryId'的行。尽管有些系统弯曲该规则,但子查询中的order_item_id = null严格不可行。 – shawnt00
谢谢你的建议。我试图给每个子查询添加“where meta_value is not null”,但它仍然成功运行,但仍然看到许多返回的NULL行。我发现它与没有名称,电子邮件地址等的entryID行有关,而只是包含_product_id,_line_subtotal,_line_total等的值。我将尝试查看是否我可以将它们按照_original_order_id分组,因为这似乎是每个订单之间的共同点。 – gffwebdev