Sql 不明确的列名“countryname”
我写了一个如下的程序Sql 不明确的列名“countryname”,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我写了一个如下的程序 BEGIN SELECT distinct countryname, countryid FROM Country c Inner join Cause cs on cs.CountryName = c.CountryName END 它显示错误消息,如不明确的列名“countryname” 我想根据countryname和countryid获取不同的行。 请帮助…您应在选择中指定表格。例如: BEGIN SELECT distinct c.country
BEGIN
SELECT distinct countryname, countryid
FROM Country c
Inner join Cause cs on cs.CountryName = c.CountryName
END
它显示错误消息,如不明确的列名“countryname”
我想根据countryname和countryid获取不同的行。
请帮助…您应在选择中指定表格。例如:
BEGIN
SELECT distinct c.countryname, c.countryid
FROM Country c
Inner join Cause cs on cs.CountryName = c.CountryName
END
如果在您的查询中,多个表上有相同的列名,那么解释器需要知道这是哪一列 在您的情况下,您应该这样编写查询:
SELECT DISTINCT c.countryname, countryid
FROM Country c INNER JOIN Cause cs
ON cs.CountryName = c.CountryName
或
建议:
您可能希望始终在所有列上指定别名
将您的模型设计为可在唯一整数或guid索引上联接,避免在CountryName上联接,除非您可以100%保证不会出现拼写错误,即使这样,这也是糟糕的设计
为表使用别名时,请确保每个表的字段都由各自的别名表示。
例如,您使用别名c表示国家表,使用别名cs表示原因,所以为了使用国家表中的任何列,请使用c.column\u name。
显示错误消息是因为两个表中可能有相同的列名,并且sql server不知道您引用的是哪个表中的哪个列
所以你的代码应该是
BEGIN
SELECT distinct c.countryname, c.countryid
FROM Country c
Inner join Cause cs on cs.CountryName = c.CountryName
END
在SELECT子句中使用c.CountryName而不是CountryName。使用此选项:从国家c内部连接中选择不同的c.CountryName、c.countryid,因为cs.CountryName=c.CountryName在选择列表中使用别名\u name.column\u name,因为两个表中都可能存在CountryName列。
BEGIN
SELECT distinct c.countryname, c.countryid
FROM Country c
Inner join Cause cs on cs.CountryName = c.CountryName
END