使用子查询 Woocommerce 创建 SQL

Creating an SQL with subquery Woo Commerce

我有以下查询:

    SELECT o.`order_id`, o.`order_item_name`, 

(select  pm.`meta_value`
 from 
 `wp_postmeta` as pm
 WHERE
 pm.`post_id` = o.`order_id`
AND
 pm.`meta_key` = '2-certificate') as 'certificate',

 
 
 
 (select  pm.`meta_value`
 from 
 `wp_postmeta` as pm
 WHERE
 pm.`post_id` = o.`order_id`
AND
 pm.`meta_key` = '3-serial') as 'serial'
 
 
 
 
 
 FROM `wp_woocommerce_order_items` as o,
`wp_woocommerce_order_itemmeta` as om,
`wp_postmeta` as pm
WHERE
o.`order_item_id` = om.`order_item_id`
AND
pm.`post_id` = o.`order_id`
AND
om.`meta_key` = 'bcs'

我希望能够连接 order_item、order_item_meta 和 post meta,post meta 会调用 2 个不同的 meta_keys 在 2 个不同的列上有 3 个序列和 2 个证书。但是当我进行查询时,它会说这个错误

Blockquote #1242 - Subquery returns more than 1 row

有什么办法可以解决这个问题吗?可能是子查询导致了问题。

您的某些订单似乎 return 在您的子查询中有多个值。您不能使用语法:

select (select ...), (select ...) 

其中 (select ...) return 不止一个值。

如果您想查找哪些订单以这种方式表现,您可以使用下一个查询。

select  pm.`post_id`, pm.`meta_key`
from  `wp_postmeta` as pm
where pm.`meta_key` in ('2-certificate', '3-serial')
group by pm.`post_id`, pm.`meta_key`
having count(*) > 1