为什么下面的MySQL查询会给出错误
1066 - 不唯一的表/别名:'MOZ'
SELECT *
FROM GA, MOZ, SF
LEFT OUTER JOIN MOZ ON GA.Page = MOZ.URL
LEFT OUTER JOIN SF ON GA.Page = SF.Address
答案 0 :(得分:2)
错误很明显,您已经引用了表MOZ
两次,为第二个表选择了另一个别名:
SELECT *
FROM GA, MOZ, SF
LEFT OUTER JOIN MOZ AS moz2 ON GA.Page = MOZ2.URL
LEFT OUTER JOIN SF ON GA.Page = SF.Address
请注意,以这种方式引用GA, MOZ, SF
子句中的三个表FROM
将使它们交叉连接,您将获得一个cartisian产品,您必须添加JOIN
条件或使用而是INNER JOIN
语法。
答案 1 :(得分:2)
简单规则:不要在from
子句中使用逗号:
SELECT *
FROM GA LEFT OUTER JOIN
MOZ
ON GA.Page = MOZ.URL LEFT OUTER JOIN
SF
ON GA.Page = SF.Address;
您的版本在三个表之间表示完整的笛卡尔积,然后然后尝试执行left join
。具体问题是表别名不明确,因为它们在from
子句中定义了两次。
答案 2 :(得分:1)
像这样使用
SELECT *
FROM GA
LEFT OUTER JOIN MOZ ON GA.Page = MOZ.URL
LEFT OUTER JOIN SF ON GA.Page = SF.Address
答案 3 :(得分:0)
您不包括加入FROM
条款的内容
SELECT *
FROM GA g
LEFT OUTER JOIN MOZ m ON g.Page = m.URL
LEFT OUTER JOIN SF s ON g.Page = s.Address