首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql中on子句中的未知列错误

问mysql中on子句中的未知列错误
EN

Stack Overflow用户
提问于 2014-07-05 08:12:24
回答 1查看 97关注 0票数 1

我有两张表:

代码语言:javascript
复制
mysql> select * FROM borrower;
+--------+------------+---------+--------------+
| cardno | name       | address | phone        |
+--------+------------+---------+--------------+
|      1 | A          | nj,usa  | 111-222-333 |
|      2 | B          | NY,USA  | 444-555-666 |
|      3 | C          | nj,usa  | 777-888-999 |
+--------+------------+---------+--------------+
3 rows in set (0.00 sec)

mysql> select * FROM bookloans;
+--------+----------+--------+------------+------------+
| bookid | branchid | cardno | dateout    | duedate    |
+--------+----------+--------+------------+------------+
|      1 |        1 |      1 | 2014-04-01 | 2014-08-01 |
+--------+----------+--------+------------+------------+
1 row in set (0.00 sec)

bookloans中的cardno是借款人中cardno的外键。C

现在,我正在尝试执行以下SQL查询:

代码语言:javascript
复制
mysql> select name,address from borrower full join bookloans
  on bookloans.cardno = borrower.cardno
  group by cardno having count(bookid)=0;
ERROR 1054 (42S22): Unknown column 'borrower.cardno' in 'on clause'

我不理解这个错误,因为借款表中有名为cardno的列。你知道我做错了什么吗?

谢谢,Sunil

EN

回答 1

Stack Overflow用户

发布于 2014-07-05 08:20:20

MySQL不支持full join语法。因此,此查询中的单词full被解释为表别名,就好像您执行了如下查询:

代码语言:javascript
复制
... FROM borrower AS `full`
    JOIN bookloans ...

然后,当您随后引用borrower.cardno时,它会感到困惑,因为它认为您希望使用别名full引用借款人表。

我知道这是MySQL解析器中的一个非常愚蠢的错误。我记录了一个关于它的bug (http://bugs.mysql.com/bug.php?id=69858)。你应该在那个bug上点击“影响我”。

请回复您的评论:

在MySQL中执行完全外连接的常见方法是:

代码语言:javascript
复制
SELECT ...
FROM borrower LEFT OUTER JOIN bookloans USING (cardno)
UNION
SELECT ...
FROM borrower RIGHT OUTER JOIN bookloans USING (cardno)

但是,在您的情况下,我不认为您实际上需要一个完整的外部连接。您使用的是GROUP BY COUNT(bookid) = 0,所以您似乎在寻找一个在bookloans中没有匹配行的左外部连接:

代码语言:javascript
复制
SELECT name, address FROM borrower
LEFT OUTER JOIN bookloans USING (cardno)
WHERE bookloans.cardno IS NULL;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24581863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档