查询错误,列ambiguos

时间:2017-07-26 10:46:51

标签: sql

查询会生成错误消息。为什么会这样?如何更正查询?

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

错误:

  

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

4 个答案:

答案 0 :(得分:0)

1st:这意味着两个表中都会显示LANGUAGE列。您需要指定要获得的列。

第二次:您需要在table后使用column name名称,以避免列名ambiguous error

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

答案 1 :(得分: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 ;

答案 2 :(得分: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 ;

可能会解决您的问题。

答案 3 :(得分:0)

有名称为LANGUAGE的表,属性名称为LANGUAGE。 我在你的查询中用粗体文字标记了它们。另外请将where子句提及为 TABLE.Attribute 看下面

选择姓名,日期 来自信件, LANGUAGE ,CITY 在哪里 表。 LANGUAGE = LANG_ID AND 表。 PLACE_SENT = CITY_ID;