3 个表上的 LEFT OUTER JOIN。为什么这个 SQL 代码给出错误 106
LEFT OUTER JOIN on 3 tables. Why does this SQL code give error 106
为什么下面的 MySQL 查询会报错
1066 - Not unique table/alias: 'MOZ'
SELECT *
FROM GA, MOZ, SF
LEFT OUTER JOIN MOZ ON GA.Page = MOZ.URL
LEFT OUTER JOIN SF ON GA.Page = SF.Address
这样使用
SELECT *
FROM GA
LEFT OUTER JOIN MOZ ON GA.Page = MOZ.URL
LEFT OUTER JOIN SF ON GA.Page = SF.Address
错误很明显,您已经引用了 table MOZ
两次,请为第二次选择另一个别名 table:
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
注意,在FROM
子句中引用三个table GA, MOZ, SF
,这样会使它们交叉连接,你会得到一个cartisian积,你必须添加一个JOIN
条件或改用 INNER JOIN
语法。
简单规则:不要在 from
子句中使用逗号:
SELECT *
FROM GA LEFT OUTER JOIN
MOZ
ON GA.Page = MOZ.URL LEFT OUTER JOIN
SF
ON GA.Page = SF.Address;
您的版本在三个 table 和 然后 之间表达一个完整的笛卡尔积,试图做 left join
。具体问题是 table 别名不明确,因为它们在 from
子句中定义了两次。
您还没有在 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
为什么下面的 MySQL 查询会报错
1066 - Not unique table/alias: 'MOZ'
SELECT *
FROM GA, MOZ, SF
LEFT OUTER JOIN MOZ ON GA.Page = MOZ.URL
LEFT OUTER JOIN SF ON GA.Page = SF.Address
这样使用
SELECT *
FROM GA
LEFT OUTER JOIN MOZ ON GA.Page = MOZ.URL
LEFT OUTER JOIN SF ON GA.Page = SF.Address
错误很明显,您已经引用了 table MOZ
两次,请为第二次选择另一个别名 table:
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
注意,在FROM
子句中引用三个table GA, MOZ, SF
,这样会使它们交叉连接,你会得到一个cartisian积,你必须添加一个JOIN
条件或改用 INNER JOIN
语法。
简单规则:不要在 from
子句中使用逗号:
SELECT *
FROM GA LEFT OUTER JOIN
MOZ
ON GA.Page = MOZ.URL LEFT OUTER JOIN
SF
ON GA.Page = SF.Address;
您的版本在三个 table 和 然后 之间表达一个完整的笛卡尔积,试图做 left join
。具体问题是 table 别名不明确,因为它们在 from
子句中定义了两次。
您还没有在 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