当我尝试运行以下内容时,我在'字段列表'中收到错误“未知列'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`
工作得很好。我怀疑有一个我遗漏的语法问题。我做错了什么?
答案 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:我是客人。
我要看的两件事:
拼写......我是一个快速的人,但有时我的手指是阅读障碍的。最糟糕的情况是,在每个表上进行描述并相互检查列名。或者,使用系统承认的列名称并复制/粘贴。
别名......但是,有人提到了这一点。
所以我猜到了一件事。