mysql 未知列_mysql – ‘字段列表’连接中的未知列’..’

您在此查询中至少有两个问题.

首先,当您使用反向标记来分隔标识符时,必须将表别名与列名称分开.

`verk.id` -- WRONG

`verk`.`id` -- CORRECT

原因是SQL实际上允许您定义包含标点符号,空格等的列名称,如果您分隔列名称.这就是你似乎正在做的事情,请求一个名为verk.id的列

verk.id -- ALSO CORRECT

正如其他人所评论的那样,您通常不需要使用分隔标识符.如果您的标识符与MySQL Reserved Words冲突,或者您需要使用标点符号,空格或国际字符,请使用它们.

第二个问题是MySQL不支持FULL JOIN.它甚至不将FULL识别为SQL关键字.所以你的查询形成如下:

...

FROM

`verk`

FULL JOIN

`loginuser_aqa`

ON ...

由MySQL解释,就好像你已经这样做了:

...

FROM

`verk` AS `FULL`

JOIN

`loginuser_aqa`

ON ...

换句话说,由于AS是SQL中的可选关键字,因此您只需将FULL设置为verk的表别名.

定义表别名时,必须对属于该表的任何列使用表别名.您不能再将列引用为verk.id,您必须使用FULL.id.这部分是标准的SQL行为,而不是MySQL的错误.

另一个问题是你没有在查询结果中获得FULL OUTER JOIN,你只是得到一个简单的JOIN,它是INNER JOIN的同义词.没有错误,但如果您需要完整的外部联接,您将无法获得预期的结果.

我在2013年报告了MySQL不支持FULL作为保留字的问题:https://bugs.mysql.com/bug.php?id=69858如果您想通过登录并单击该页面上的“影响我”按钮,您可以将您的投票添加到错误的优先级.

如果您需要在MySQL中执行FULL OUTER JOIN,则必须使用变通方法.见这里的例子:Full Outer Join in MySQL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值