Понимание проблемы ...
Подумайте о своем запросе. Если убрать скобки (потому что все условия 'и'), это будет выглядеть так:
select int_value from test
where qid = 1 and string_value = 'Red'
and qid = 2 and string_value = "Green"
Кроме того, 'и' обладает аналогичным свойством умножения: порядок факторов не влияет на результат, поэтому мы можем сделать следующее:
select int_value from test
where qid = 1 and qid = 2
and string_value = "Green" and string_value = 'Red'
Как видите, невозможно , что одна запись может равняться qid 1 и 2; это просто нелогично. То же самое для string_value.
Простой ответ
Итак, другие решения, использующие ИЛИ, верны (запись qid может быть равна 1 ИЛИ 2). Чтобы сделать вашу жизнь проще, вот краткий ответ, который также устраняет дубликаты:
select distinct int_value from test
where (qid = 1 and string_value = 'Red')
or (qid = 2 and string_value = "Green")