Получение отфильтрованных данных с несколькими наборами данных в качестве фильтров в MySQL

#mysql #wordpress

#mysql #wordpress

Вопрос:

Я пытаюсь создать фильтр для фильтрации пользователей с несколькими параметрами. Я понимаю, что приведенный ниже запрос предназначен для post meta, но он работает так же, и его легче протестировать на моей стороне.

 SELECT * 
FROM wp_postmeta 
WHERE (meta_key="_regular_price" AND meta_value="295") 
AND (meta_key="_weight" AND meta_value="2.5")
  

Когда я выполняю приведенный выше код, я не получаю результатов, но если я изменяю AND между двумя наборами скобок на OR, он возвращает оба результата, и из этого я вижу, что есть по крайней мере 1 результат (post_id), который находится в обоих.

Что я здесь делаю не так?

Комментарии:

1. Попробуйте ИЛИ вместо И, потому что невозможно, чтобы один из них meta_key был одновременно _regular_price И _weight

Ответ №1:

Вы можете попробовать ниже —

 SELECT * 
FROM wp_postmeta where (meta_key,meta_value) in (("_regular_price","295"),("_weight","2.5"))
  

Комментарии:

1. Это возвращает тот же результат, если я изменяю AND между двумя наборами скобок на OR. Желаемый результат, который я ищу, вернет только одну или 2 записи, которые соответствуют обоим параметрам