我写了一个如下的程序
BEGIN
SELECT distinct countryname, countryid
FROM Country c
Inner join Cause cs on cs.CountryName = c.CountryName
END
它显示错误消息,例如"不明确的列名称' countryname'。"
我想根据countryname和countryid获取不同的行。 请帮忙......
答案 0 :(得分:2)
您应在select中指定表。例如:
BEGIN
SELECT distinct c.countryname, c.countryid
FROM Country c
Inner join Cause cs on cs.CountryName = c.CountryName
END
答案 1 :(得分:2)
如果在您的查询中,多个表上的相同列名可用,则Interpreter需要知道哪个列是什么意思。
在您的情况下,您应该像这样编写查询:
SELECT DISTINCT c.countryname, countryid
FROM Country c INNER JOIN Cause cs
ON cs.CountryName = c.CountryName
或
SELECT DISTINCT cs.countryname, countryid
FROM Country c INNER JOIN Cause cs
ON cs.CountryName = c.CountryName
建议:
您可能希望始终在所有列上指定别名
将您的模型设计为可以在唯一的整数或guid索引上连接,避免加入" countrynames"除非你能100%保证永远不会出现拼写错误(即使那时设计也不好)。
答案 2 :(得分:1)
对alias
使用tables
时,请确保每个表的字段由各自的别名表示。
例如,您为c
表使用了别名country
,为cs
使用了cause
,因此为了使用country
表中的任何列,请使用{{1} }。
显示您的错误消息是因为两个表中的列名可能相同,而c.column_name
并不知道您从哪个表中引用哪个列。
所以你的代码应该像
sql-server