MySQL-比较2行与特定属性

时间:2019-01-16 07:14:25

标签: mysql wordpress phpmyadmin

首先,对不起这个标题,我尽力描述了它。

我试图覆盖WordPress的功能wc_get_product_ids_on_sale(),因为我的一个插件正在创建_sale_price,即使价格与价格相同。

我想知道,我如何仅获取具有以下内容的post_id:

  • _sale_price与_price
  • 不同
  • _sale_price不为空

我只知道如何清空...

SELECT post_id FROM wp_postmeta 
WHERE meta_key = '_sale_price'
AND meta_value <> ''

你有什么想法吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

您需要使用数据透视提取并比较元值:

SELECT post_id
FROM wp_postmeta
GROUP BY post_id
HAVING
    MAX(CASE WHEN meta_key = '_sale_price' THEN meta_value END) = '' AND
    MAX(CASE WHEN meta_key = '_price' THEN meta_value END) <> '';

此答案假定meta_value列是文本,而不是数字。如果该列是数字列,那么您将必须在此处弄清什么意思。

如果您不熟悉数据透视查询的概念,请参考this SO question以获取更多信息。