2014-03-28 134 views
0

我有一個表存儲ID的字段名稱和字段值。我需要在兩個不同的字段上進行搜索,其中ID是相同的,並且字段值是使用BETWEEN比較從兩列中獲取的。MYSQL查詢兩個不同的列

下面是表的樣本:

lid | field_name | field_value 
1 |  lat  | 32.409172 
1 |  lng  | -90.13618300000002 
2 |  lat  | 38.409172 
2 |  lng  | -92.13618300000002 

等。這個想法是讓蓋的地方(Lat)爲X和Y的LNG之間的是A和B.

之間
+0

能否請你提供樣品你期望的輸出? – Mureinik

+2

如果你主要是以這種方式查詢那個表,你應該考慮改變你的表模式。我認爲經緯度應該是兩個領域。這將大大簡化您的查詢。 –

回答

0

你可以做一個自連接有一排緯度和經度,那麼你可以申請一個where條款爲你像:

SELECT lid, lat.field_value AS lat, lng.field_value AS lng 
FROM table lat 
INNER JOIN table lng 
ON lat.lid = lng.lid AND lng.field_name = "lng" 
WHERE (lat.field_value BETWEEN x AND y 
OR lng.field_falue BETWEEN a AND b) 
AND lat.field_name = "lat" 
+0

我沒有收到任何結果。我期待看看是否有結果,但應該有,因爲我輸入的值是從列表地圖發送的。 – Judson

+0

也許你想要'(lat.field_value BETWEEN x AND y OR lng.field_falue BETWEEN a AND b)'而不是'和'約束? – GhostGambler

+0

就是這樣!如果你編輯你的回覆,我會接受它! – Judson

0

這裏是所有的70和80我假設你的表之間的50和60和LAT之間LNG的LID被命名爲「表」

select t1.lid 
from table t1 
join table t2 on t1.lid=t2.lid 
where t1.field_name='lng' 
and t1.field_value between 50 and 60 
and t2.field_name='lat' 
and t2.field_value between 70 and 80