进行连接时SQL未知列

时间:2011-04-14 22:10:47

标签: mysql sql join

当我尝试运行以下内容时,我在'字段列表'中收到错误“未知列'guests_guest.id'”:

SELECT guests_guest.id
FROM `guests_guest` full join
guests_guest_group
on guests_guest.id=guests_guest_group.guest_id

所有专栏&表名是正确的。事实上,只是运行

SELECT guests_guest.id
FROM `guests_guest`

工作得很好。我怀疑有一个我遗漏的语法问题。我做错了什么?

3 个答案:

答案 0 :(得分:2)

尝试:

SELECT gg.id
FROM `guests_guest` as gg
join guests_guest_group as ggg
on ggg.guest_id=gg.id

假设guests_guest_group没有id列。

答案 1 :(得分:2)

full join

您是否尝试过删除full

这不是Oracle,它是MySQL,对吗? AFAIK,FULL JOIN尚未在MySQL中实现。

解析器(因为“full”不是它知道的关键字),将您的查询评估为:

SELECT guests_guest.id
FROM guests_guest AS full                 <--- crucial note
  JOIN guests_guest_group
    ON guests_guest.id = guests_guest_group.guest_id

之后,guests_guest不是它知道的名称,但它使用full作为表guests_guest的别名。这就是产生这个错误的原因。

如果您确实需要FULL JOIN而不是(INNER)JOIN,那么请搜索SO以了解如何在MYSQL中实现FULL JOIN。

答案 2 :(得分:0)

@rockerest:我是客人。

我要看的两件事:

  1. 拼写......我是一个快速的人,但有时我的手指是阅读障碍的。最糟糕的情况是,在每个表上进行描述并相互检查列名。或者,使用系统承认的列名称并复制/粘贴。

  2. 别名......但是,有人提到了这一点。

  3. 所以我猜到了一件事。