我有以下的MySQL查询:
SELECT de.geoId,(6371 * ACOS( COS( RADIANS(zde.latitude) )*
COS(RADIANS( de.latitude ) ) * COS( RADIANS( de.longitude ) - RADIANS(zde.longitude) ) +
SIN( RADIANS(zde.latitude) ) * SIN( RADIANS( de.latitude ) ) ) ) AS distance
FROM tbl_zipde AS zde
LEFT JOIN tbl_country_de AS de
ON (de.admin1_code=zde.admin_code1)
Where zde.id=8 and de.geoId=24 having distance<1
这个查询应该从 tbl_zipde 表中返回一条记录,其纬度和经度值与 id=8 的记录的相同,但由于这两点之间计算出的距离为0,mysql 将0识别为距离的 NULL 值,因此它不会返回任何记录,但是如果我删除 "having distance<1",那么它将返回来自 tbl_country_de 表的正确记录(id=24),但表列距离的值为 NULL。
我应该如何编写 mysql 查询,以便 mysql 返回两点之间距离为 0 的记录(纬度和经度值)?
为什么 mysql 返回 NULL 而不是 '0' ?
我已将纬度和经度的数据类型从 decimal(10,7) 更改为 float(10,7),现在可以正常工作了。 不知道这是否是真正的问题?
null
是“具有传染性”的。如果您在任何类型的数学运算中包含null值,则整个操作的结果将变为null。 - Marc B