Вам не нужен второй where
, а второй and
, вероятно, должен был быть or
:
SELECT DISTINCT id
FROM metadata
WHERE (meta_key = 'school' AND meta_value = 'Some School')
OR (meta_key = 'hidden' AND meta_value = '1')
(причина, по которой я думаю, что вы хотели or
, заключается впотому что в противном случае у вас есть совокупность противоречивых предложений meta_key = 'school' AND meta_key = 'hidden'
, что всегда ложно).
РЕДАКТИРОВАТЬ : В ответ на комментарий ОП о результатах, которые он пытается получить, вотдругой запрос:
SELECT DISTINCT m1.id
FROM metadata m1
join metadata m2 on m1.id = m2.id
WHERE (m1.meta_key = 'school' AND m1.meta_value = 'Some School')
AND (m2.meta_key = 'hidden' AND m2.meta_value = '1')
Теперь предложения о соединении больше не противоречат друг другу, поскольку они ссылаются на две разные строки m1
и m2
.