两个表(zielpersonen和wegeinland)都有一个名为WP的列。所以当我加入它们时,有一个错误说列引用“WP”是不明确的。实际上我想使用来自zielpersonen表的WP进行计算。如何避免此错误?
SELECT SUM("WP"*"w_rdist")/(62868*AVG("WP")) FROM mobility.mzmv2010.zielpersonen
JOIN mobility.mzmv2010.wegeinland USING ("HHNR","ZIELPNR")
答案 0 :(得分:0)
在您的查询中,为表使用别名,然后使用相应的表别名为所需的列添加前缀。
SELECT
SUM(zp."WP"*"w_rdist")/(62868*AVG(zp."WP"))
FROM mobility.mzmv2010.zielpersonen zp
JOIN mobility.mzmv2010.wegeinland wg
USING ("HHNR","ZIELPNR")
这通常是您在查询中访问更多表时的最佳做法,因此请确保在查询中为所有列添加前缀。
通过执行此操作,您实际上有点主动,因为如果有可能将现在位于单个表中的列添加到您的第二个表中,则此查询将失败并且将需要更正(我猜是你不希望在生产环境中发生的事情。)
答案 1 :(得分:0)
您应该使用表别名和限定列名。不只是在这个查询中,而是一个好习惯:
SELECT SUM(p."WP" * "w_rdist")/ (62868 * AVG(p."WP"))
FROM mobility.mzmv2010.zielpersonen p JOIN
mobility.mzmv2010.wegeinland w
USING ("HHNR", "ZIELPNR")
我不知道w_rdist
来自何处,但也应该有一个表别名。