2017-07-26 85 views
-5

该查询产生一条错误消息。为什么会这样?可以做些什么来纠正查询?查询错误,列模糊

SELECT NAME, DATE 
FROM LETTER, LANGUAGE, CITY 
WHERE LANGUAGE = LANG_ID 
AND PLACE_SENT = CITY_ID ; 

错误:

Query could not be executed : 1052: Column 'LANGUAGE' in where clause is ambiguous

+1

发布您的错误消息以及 – tharif

+0

什么是错误消息?以及你在哪个数据库上运行这个查询? – ayush

+0

无法执行查询: 1052:where子句中的'LANGUAGE'列含糊不清 – Romero1994

回答

0

1:这意味着这两个表。你需要指定你想获得哪一个中提出LANGUAGE列。

第二:你需要使用table名称与column name避免列名ambiguouserror

SELECT LETTER.NAME, LETTER.DATE 
FROM LETTER , LANGUAGE, CITY 
WHERE LETTER.LANGUAGE = LANGUAGE.LANG_ID 
AND LETTER.PLACE_SENT = CITY.CITY_ID ; 
0

所以LANGUAUGE列存在于一个以上的表。因此,你需要澄清你想选择此列的表。请还可以添加的表名where条款

SELECT LETTER.NAME, LETTER.DATE 
FROM LETTER , LANGUAGE, CITY 
WHERE LETTER.LANGUAGE = LANGUAGE.LANG_ID 
AND LETTER.PLACE_SENT = CITY.CITY_ID ; 
0

在当我有猜测:

SELECT NAME, DATE 
FROM LETTER, LANGUAGE, CITY 
WHERE LETTER.LANGUAGE = LANG_ID 
AND PLACE_SENT = CITY_ID ; 

SELECT NAME, DATE 
FROM LETTER, LANGUAGE, CITY 
WHERE CITY.LANGUAGE = LANG_ID 
AND PLACE_SENT = CITY_ID ; 

SELECT NAME, DATE 
FROM LETTER, LANGUAGE, CITY 
WHERE LANGUAGE.LANGUAGE = LANG_ID 
AND PLACE_SENT = CITY_ID ; 

SELECT NAME, DATE 
FROM LETTER, LANGUAGE, CITY 
WHERE LANGUAGE.ID = LANG_ID 
AND PLACE_SENT = CITY_ID ; 

可能会解决您的问题。

0

有一个表名为LANGUAGE,属性名称为LANGUAGE。 我在你的查询中用粗体文本标记了它们。也确实提到了在where子句为table.attribute的 看看下面

SELECT名称,日期 从letter,语言,市 WHERE 表。语言 = LANG_ID AND 表。 PLACE_SENT = CITY_ID;