Поскольку ваши поля отображаются так:
fid 3 = country
fid 2 = age
fid 6 = sex
Вы можете преобразовать эту таблицу в более логичное представление (индексированное по UID)
(SELECT c.uid, c.country, a.age, s.sex FROM
(SELECT uid, value AS country FROM maintable WHERE fid = 3) c INNER JOIN
(SELECT uid, value AS age FROM maintable WHERE fid = 2) a ON c.uid = a.uid INNER JOIN
(SELECT uid, value AS sex FROM maintable WHERE fid = 6) s ON c.uid = s.uid
) as X
Как только оно попадет в представление, вы сможете обрабатывать ваши данные как обычную таблицу. Я предполагаю, что у вас может быть более 3 типов данных, так как fid доходит до 6 на вашем примере.
Предполагая, что вы поместили это в представление (называемое X), вы можете просто сделать:
SELECT * FROM X
WHERE age BETWEEN 20 AND 30
AND country = 'spain'
AND sex = 'male'