不是独一无二的/表别名'喘息'

时间:2015-01-27 16:38:29

标签: mysql sql

所以我对我收到此错误的原因感到有些困惑。这是我(非常简单)的查询。

SELECT * FROM consumer_info, respite INNER JOIN respite ON consumer_info.consumer_id = respite.consumer_id;

我甚至重写了它并将两个字段(consumer_info.consumer_idrespite.consumer_id)别名都无济于事。我不知道可能导致这种情况 - 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

您正在混合两种连接语法 - 预ANSI和ANSI连接。您应该按如下方式重写语句:

SELECT *
FROM consumer_info
INNER JOIN respite ON consumer_info.consumer_id = respite.consumer_id;

在ANSI之前的语法中,连接看起来像这样(不推荐):

SELECT *
FROM consumer_info, respite 
WHERE consumer_info.consumer_id = respite.consumer_id;

答案 1 :(得分:1)

您尚未设置别名,并且您的连接语法很混乱(查询中存在显式和隐式JOIN语法):

显式语法:

SELECT * FROM consumer_info ci INNER JOIN respite r ON ci.consumer_id = r.consumer_id;

隐含语法:

  SELECT * FROM consumer_info, respite WHERE consumer_info.consumer_id = respite.consumer_id;

答案 2 :(得分:1)

您正在从正在加入的表格中进行选择:

SELECT *
FROM consumer_info, respite
                     ^^^^^
INNER JOIN respite ...
            ^^^

您可以多次加入/使用表,但表的每次使用必须有自己唯一的别名。尝试

FROM consumer_info, respite
INNER JOIN respite AS somethingelse
                   ^^^^^^^^^^^^^^^^---- table alias

然后respite.foo将使用FROM中列出的表格副本,somethingelse.foo将使用JOIN中列出的副本。