两个不同列上的MYSQL查询

时间:2014-03-28 16:45:32

标签: php mysql

我有一个存储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之间。

2 个答案:

答案 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