MySQL - сравнить 2 строки с определенным атрибутом - PullRequest
0 голосов
/ 16 января 2019

Прежде всего, извините за этот заголовок, я старался изо всех сил описать его.

Я пытаюсь переопределить функцию 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 голосов
/ 16 января 2019

Вам нужно использовать поворот, чтобы извлечь, а затем сравнить мета-значения:

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 является текстом, а не числом. Если столбец числовой, вам придется уточнить, что здесь означает пустое.

Если вы новичок в концепции сводных запросов, то я отсылаю вас к этому SO-вопросу для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...