То, как вы написали свой запрос, означает, что вы хотите, чтобы (мета> 18) и (страна = Бразилия) все были в одной строке. Но этого никогда не происходит, так как ваш стол не построен таким образом.
Вы можете сделать это для запроса одной пары мета / значений:
SELECT userID
FORM User
WHERE (meta = 'age' AND value > 18)
Но если вы хотите сделать запрос по двум парам мета / значений, вы должны присоединить таблицу к себе, например, так:
SELECT a.userID
FROM User AS a
JOIN User AS b ON a.userID = b.userID
WHERE (a.meta = 'age' AND a.value > 18)
AND (b.meta = 'country' AND b.value = 'Brazil')
Таким образом, он «фактически создает» таблицу, в которой в каждой строке будет два мета-значения и два значения возраста. Вы можете использовать WHERE
условия для проверки условий на двух парах мета и значения.
Приведенный выше запрос приводит к идентификатору пользователя = 1 и = 3 (из данных примера, которые вы указали в вопросе).