Bạn có thể sử dụng tính năng tổng hợp có điều kiện để lấy tất cả thông tin cho cấp độ gốc vào một hàng và sau đó sử dụng where
mệnh đề cho điều kiện bắt buộc.
select * from (
select parentid
,max(case when key='name' then value end) as name
,max(case when key='age' then value end) as age
,max(case when key='place' then value end) as place
from tableA
group by parentid
) t
where place='place1' and age=20
Điều này giả sử chỉ có một hàng cho mỗi khóa trên mỗi cấp độ gốc trong bảng.