SELECT dk.*, st_area (dk.geom :: geography) as area, st_asewkt (dk.geom) as ewkt FROM "TB_GHDK" AS dk WHERE ST_Contains ( ST_GeomFromText ( 'POLYGON ((109.43177469802706 18.30810494563685, 109.43001133911511 18.290042431376694, 109.44640581116127 18.28656337190178, 109.45174354624606 18.308438554079647, 109.43177469802706 18.30810494563685))', 4326 ), dk.geom ) AND ST_Area (dk.geom :: geography) >= 1000 AND ST_Area (dk.geom :: geography) <= 2000; AND NOT EXISTS ( SELECT 1 FROM "TB_YJJBNTBH" AS nt WHERE ST_Intersects (dk.geom, nt.geom) ) AND EXISTS ( SELECT 1 FROM "TB_CZKFBJ" AS bj WHERE ST_Contains (bj.geom, dk.geom) );