MySQL中的WITHIN關(guān)鍵字是一個(gè)相對常用的查詢語句中的過濾條件。其作用是在一定范圍內(nèi)查詢滿足要求的記錄。
SELECT * FROM table_name WHERE ST_WITHIN(point_column, area_polygon);
以上語句中,point_column表示需要判斷是否在某一多邊形區(qū)域內(nèi)的點(diǎn)的列名,area_polygon表示多邊形區(qū)域所在的列名。WITHIN函數(shù)會(huì)自動(dòng)判斷可能面對的各種情況,并且可確保在所有類型列上的正確運(yùn)行。
對于有經(jīng)緯度數(shù)據(jù)的表,可以通過以下示例查詢位于指定地理范圍的數(shù)據(jù):
SELECT * FROM table_name WHERE ST_WITHIN(latlng_point, ST_GEOMFROMTEXT('POLYGON((12 34,56 78,90 12,34 56,12 34))'));
以上語句中,latlng_point是存儲(chǔ)經(jīng)緯度的列名,ST_GEOMFROMTEXT是一個(gè)可將文本轉(zhuǎn)換成空間幾何形狀的函數(shù),其中POLYGON表示多邊形形狀,多邊形的各頂點(diǎn)坐標(biāo)用逗號隔開。
需要注意的是,為了支持空間數(shù)據(jù),MySQL所使用的空間輔助庫必須安裝MySQL Spatial包,并且該表的geometry列要被定義為Spatial類型。