SqL左外连接歧义列名称

时间:2017-04-05 05:48:58

标签: sql tsql

我收到一条错误,说GeographyName含糊不清但我不确定这意味着什么:

navigator.mediaDevices.getUserMedia()

4 个答案:

答案 0 :(得分:3)

Ambiguous Colum Name表示SQL Server有一个特定名称的列可供选择,并且不知道哪一列。

我发现你的查询中有很多连接,因此引入了很多表,也许在多个表中使用相同的列名。

您的问题似乎在查询的第2行,您没有指定GeographyName列来自哪个表。

答案 1 :(得分:2)

RowID 列的order by

SELECT ROW_NUMBER() OVER (
                          ORDER BY g.GeographyName ASC) AS RowID,
       g.GeographyName,
       c.categorydesc AS CategoryDesc,
       ROUND(SUM(s.TotalFunding), 0) AS TotalFunding,
       g.GeographyCode,
       t .GeographyTypeDesc,
       r.GeographyRegionDesc,
       g.GeographyRegionID,
       a.Latitude,
       a.Longitude
FROM dbo.StateSummaryByCategory AS s
INNER JOIN dbo.Geography AS g ON g.GeographyID = s.GeographyId
INNER JOIN dbo.GeographyType AS t ON g.GeographyTypeID = t .GeographyTypeID
INNER JOIN dbo.GeographyRegion AS r ON g.GeographyRegionID = r.GeographyRegionID
INNER JOIN dbo.Category AS c ON s.categoryid = c.categoryid
LEFT OUTER JOIN dbo.Geography_LatLons a ON g.GeographyCode = a.GeoCode
AND g.GeographyName = a.GeographyName

GeographyName字段位于多个列中。所以你已经提到了你要用来排序的那个

答案 2 :(得分:1)

" GeographyName含糊不清"表示结果数据有两个GeographyName列名。所以,当你尝试" ORDER BY GeographyName"在SQL中,SQL得到歧义错误,简单来说,它无法选择哪一个应该考虑进行排序。因此,解决方案是将" ORDER BY g.GeographyName"或者a.GeographyName 根据您的要求而不是按照地理名称排序' ORDER BY GeographyName'你的陈述。

答案 3 :(得分:0)

确保在select,join和where语句中提到的每一列都使用正确的表别名。