如何找到数据表中的所有行,这些行与另一个表中的行数据之间的某些计算结果相关?
(例如,对于电子商店,我想查找产品表中的所有产品(行),这些产品的价格(另一个表中的列)低于相对运费加上常规运费的总和该产品的价格(数据在另一个表中)。
我怎样才能实现这个目标?
为了更清楚,让我们尝试使用 woocommerce MYSQL 查询:
SELECT *
FROM wp_posts p
join wp_postmeta m
WHERE meta_key="_price" and m.meta_value < (
SELECT meta_value
from wp_postmeta
where post_id=p.ID and meta_key='shipping_cost'
) + (
Select meta_value
from wp_postmeta
where post_id=p.ID and meta_key='_regular_price'
);
在MYSQL里面可以做这样的计算吗?
您应该多次使用
wp_postmeta
进行连接,而不是使用相关子查询。
SELECT *
FROM wp_posts AS p
JOIN wp_postmeta AS m1 ON p.id = m1.post_id
JOIN wp_postmeta AS m2 ON p.id = m2.post_id
JOIN wp_postmeta AS m3 ON p.id = m3.post_id
WHERE m1.meta_key = '_price' AND m2.meta_key = 'shipping_cost' AND m3.meta_key = '_regular_price'
AND m1.meta_value < m2.meta_value + m3.meta_value