麻烦大型查询在MySQL中,选择if语句

时间:2013-11-06 16:24:20

标签: mysql sql select if-statement

我的MySQL服务器中有这么大的查询:

SELECT IF(MBRContains(GeomFromText("POLYGON((37.5426344872 55.7108342622), (37.6080245972 55.7395383327))"), PointFromText(AsWkt(`map_position`))) = 1, id, NULL) as `result` FROM `webgl-app`.shapefiles_data;

它会返回这样的结果:

enter image description here

我只需要从现有值中获取所有行(*)。

所以,这个想法是:要获取所有记录,如果数据IS NOT NULL在这里。

我试过用:

SELECT IF(MBRContains(GeomFromText("POLYGON((37.5426344872 55.7108342622), (37.6080245972 55.7395383327))"), PointFromText(AsWkt(`map_position`))) = 1, id, NULL) as `result` FROM `webgl-app`.shapefiles_data WHERE `result` != NULL;

但这是一个错误的想法,我如何解决我的问题并为我的目标构建正确的SQL查询?

谢谢!

1 个答案:

答案 0 :(得分:0)

SELECT *
FROM `webgl-app`.shapefiles_data 
WHERE IF(MBRContains(GeomFromText("POLYGON((37.5426344872 55.7108342622), (37.6080245972 55.7395383327))"), 
       PointFromText(AsWkt(`map_position`))) = 1, id, NULL) IS NOT NULL;