[英]Compare values with BETWEEN from same columns as two different columns
我將來自用戶上傳的圖像文件的眾多屬性存儲在一個表中。 該表的基本結構如下:
attrib_id | image_id | attrib_name | attrib_value
除了TAG
和CAPTION
等屬性外,我還以相同的方式存儲圖像位置的LATITUDE
和LONGITUDE
。 所有列的類型均為varchar
。
我正在嘗試查詢與給定邊界框內的位置相關聯的圖像-輸入的是上緯度和下緯度,開始和結束經度。 查詢的輸出應該是image_id
的列表,該列表具有name=LATITUDE
且行value BETWEEN upper and lower latitude
為value BETWEEN upper and lower latitude
,對於經度也是如此。
由於所有值都是字符串,並且在同一列中,所以我真的不知道從哪里開始。
雖然我願意考慮重組表,但直覺告訴我,有一種方法可以在SQL中完成此操作。
我的數據庫當前是MySql,但將來可能會切換到Postgres,因此我更喜歡非供應商特定的解決方案。
您可以執行以下操作:
SELECT * FROM Table lat
INNER JOIN Table lon ON lat.image_id = lon.image_id
WHERE (lon.attrib_name = 'LONGITUDE' AND lon.attrib_value BETWEEN start AND end) AND
(lat.attrib_name = 'LATITUDE' AND lat.attrib_value BETWEEN upper AND lower)
不知道Postgres是否支持BETWEEN
或您遷移到的任何東西,以便只使用<
和>
運算符即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.