Sql 左联合&;模糊错误
我正在努力解决一个(很可能)非常简单的问题。我不断得到以下错误:Sql 左联合&;模糊错误,sql,Sql,我正在努力解决一个(很可能)非常简单的问题。我不断得到以下错误: Error: ambiguous column name: Rek.name 好吧,理论上我知道这个错误的意思。然而,我不太明白为什么在我尝试使用这个时会出现: SELECT DISTINCT Rek.name AS abc, COUNT(DISTINCT Fav.FavId) AS def FROM Rek, Fav LEFT JOIN Artist ON Rek.RekId = Fav.RekId; 为什么Rek.name
Error: ambiguous column name: Rek.name
好吧,理论上我知道这个错误的意思。然而,我不太明白为什么在我尝试使用这个时会出现:
SELECT DISTINCT Rek.name AS abc, COUNT(DISTINCT Fav.FavId) AS def
FROM Rek, Fav
LEFT JOIN Artist ON Rek.RekId = Fav.RekId;
为什么Rek.name模棱两可?如何使其不含糊?如果要加入Fav表:
SELECT DISTINCT Rek.name AS abc, COUNT(DISTINCT Fav.FavId) AS def
FROM Rek
LEFT JOIN Fav ON Rek.RekId = Fav.RekId
GROUP BY Rek.name;
如果您还需要艺术家表:
SELECT DISTINCT Rek.name AS abc, COUNT(DISTINCT Fav.FavId) AS def
FROM Rek
LEFT JOIN Fav ON Rek.RekId = Fav.RekId
LEFT JOIN Artist ON Rek.common_attribute= Artist.common_attribute
GROUP BY Rek.name;
嗯?我认为您想要的查询如下所示:
SELECT Rek.name AS abc, COUNT(Fav.RekId) AS def
FROM Rek LEFT JOIN
Fav
ON Rek.RekId = Fav.RekId
GROUP BY Rek.name;
注:
- 不需要
表Artist
是执行selectdistinct
的笨拙方式groupby
- 据推测,
是主键。在这种情况下,不需要fav.favid
COUNT(DISTINCT)
连接
)显式连接链在逗号分隔的隐式连接之前进行计算。因此,Rek表不在LEFT JOIN的ON子句的作用域内。您确定这是生成实际错误的查询吗?我认为它不应该给出这个错误。此外,您正在对Artist
表进行交叉连接;可能不是你想要的。要做的事。别忘了分组。你用的是什么数据库?如前所述,您的查询没有对Rek.name
的模糊引用。谢谢!看来解决办法很简单;删除第2行中的“Fav”。我想我必须进一步研究这一点,以正确理解左连接。无需在此处选择DISTINCT,因为GROUP BY不返回重复项。如果GROUP BY不返回重复项,我不会选择No