我有一个这样的sql:
SELECT
userAddress.user_address_complete,
userAddress.user_address_point,
deliveryZone.delivery_zone_id,
St_contains(deliveryZone.delivery_zone_polygon,
Geomfromtext('POINT(userAddress.user_address_point)')) AS cnt
FROM user_addresses userAddress
LEFT JOIN delivery_zones deliveryZone
ON (deliveryZone.restaurants_id = 154
AND St_contains(deliveryZone.delivery_zone_polygon,
Geomfromtext('POINT(userAddress.user_address_point)'))
> 0)
WHERE userAddress.user_address_user_id = 1
问题是 POINT(userAddress.user_address_point)
应该使用 userAddress.user_address_point
字段数据,但 sql 无法理解它是一个字段名称并对其进行操作就像一个字符串,所以我们没有结果。
有什么建议吗?
最佳答案
尝试从字符串中排除列名称。将其拆分为
'POINT('userAddress.user_address_point'))
SELECT
userAddress.user_address_complete,
userAddress.user_address_point,
deliveryZone.delivery_zone_id,
St_contains(deliveryZone.delivery_zone_polygon,
Geomfromtext('POINT('userAddress.user_address_point')')) AS cnt
FROM user_addresses userAddress
LEFT JOIN delivery_zones deliveryZone
ON (deliveryZone.restaurants_id = 154
AND St_contains(deliveryZone.delivery_zone_polygon,
Geomfromtext('POINT('userAddress.user_address_point')'))
> 0)
WHERE userAddress.user_address_user_id = 1
关于Mysql - 如何使用字段数据作为 POINT() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38974497/