所以我对我收到此错误的原因感到有些困惑。这是我(非常简单)的查询。
SELECT * FROM consumer_info, respite INNER JOIN respite ON consumer_info.consumer_id = respite.consumer_id;
我甚至重写了它并将两个字段(consumer_info.consumer_id
和respite.consumer_id
)别名都无济于事。我不知道可能导致这种情况 - 任何帮助将不胜感激。
答案 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
中列出的副本。