簡體   English   中英

比較來自相同列和兩個不同列的BETWEEN的值

[英]Compare values with BETWEEN from same columns as two different columns

我將來自用戶上傳的圖像文件的眾多屬性存儲在一個表中。 該表的基本結構如下:

attrib_id | image_id | attrib_name | attrib_value

除了TAGCAPTION等屬性外,我還以相同的方式存儲圖像位置的LATITUDELONGITUDE 所有列的類型均為varchar

我正在嘗試查詢與給定邊界框內的位置相關聯的圖像-輸入的是上緯度和下緯度,開始和結束經度。 查詢的輸出應該是image_id的列表,該列表具有name=LATITUDE且行value BETWEEN upper and lower latitudevalue 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM