我有一个存储id,字段名称和字段值的表。我需要搜索两个不同的字段,其中ID是相同的,字段值是使用BETWEEN比较从两列中获取的。
以下是该表的示例:
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 :(得分: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"
答案 1 :(得分:0)
这里是所有LID,其中lng介于50和60之间,介于70和80之间。我假设你的表名为" table"
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