我有一个这样的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

10-07 23:33