【发布时间】:2023-03-19 22:41:01
【问题描述】:
我有 2 个 sql 查询,其中一个可以工作,但另一个出错。以下查询效果很好
select /*ordered*/ coupon_address.coupon,merchant_address.id
from merchant_address,
coupon_address,
customers c
WHERE merchant_address.id = coupon_address.merchant_address
and c.CUSTOMER_ID = 'temp1'
AND sdo_within_distance(c.cust_geo_location,merchant_address.store_geo_location,'distance = 1 unit=MILE') = 'TRUE';
但以下查询不起作用并给出错误
select /*ordered*/ coupon_address.coupon,merchant_address.id
from coupon_address,
customers c
JOIN merchant_address ON merchant_address.id=coupon_address.merchant_address
WHERE c.CUSTOMER_ID = 'temp1'
AND sdo_within_distance (c.cust_geo_location,merchant_address.store_geo_location, 'distance = 1 unit=MILE') = 'TRUE';
错误是
第 1 行出现错误:ORA-00904:“COUPON_ADDRESS”。“MERCHANT_ADDRESS”:标识符无效
【问题讨论】:
-
您将旧的、古老的、过时的和脆弱的隐式连接与显式的
JOIN运算符混合在一起。不要那样做。 -
如果你使用ANSI语法,你必须对所有的表都使用它;同样,如果您决定使用旧的 Oracle 连接语法(强烈建议不要这样做),请对所有表执行此操作
-
@a_horse_with_no_name 将过时的连接与 JOIN 混合是什么意思?
-
包含表定义