【问题标题】:mysql full join error-#1054 - Unknown column 'feesmaster.PAIDAMOUNT' in 'field list'mysql 完全连接错误-#1054 - 'field list' 中的未知列 'feesmaster.PAIDAMOUNT'
【发布时间】:2026-02-14 06:05:01
【问题描述】:

我有查询返回这样的数据

DATE( expensemaster.`date` )    SUM( feesmaster.PAIDAMOUNT )    SUM( expensemaster.amount )
2013-01-09                         0                             7824.4
2013-01-15                         200                            211

请查看查询,

SELECT DATE( expensemaster.`date` ) , 
       SUM( feesmaster.PAIDAMOUNT ) , 
       SUM( expensemaster.amount ) 
FROM 
    feesmaster
    INNER JOIN expensemaster 
        ON DATE( feesmaster.DATETIME ) = DATE( expensemaster.date ) 
WHERE 
    DATE( expensemaster.`date` ) BETWEEN  '2013-01-09' AND  '2013-01-15'
    AND DATE( feesmaster.`datetime` ) BETWEEN  '2013-01-09' AND '2013-01-15'
GROUP BY 
    DATE( feesmaster.`datetime` ), 
    DATE( expensemaster.`date` )

如果我将内部替换为完整,以便在其中一个表中有匹配项时获得返回行,但我收到错误

#1054 - “字段列表”中的未知列“feesmaster.PAIDAMOUNT”

我正在使用 phpmyadmin。

【问题讨论】:

  • 请重新格式化您的问题并发布您所讨论的表格的结构。
  • 左外连接怎么样?
  • @AndriusNaruševičius 左外连接返回与内连接相同的行
  • @MatteoTassinari 请立即查看
  • 您能否对返回此错误的查询提出疑问。

标签: mysql join


【解决方案1】:

据我所知,MySQL 不支持 FULL JOIN,因此在这种情况下,FULL 一词表示您的第一个表 feesmaster别名。所以没有列feesmaster.PAIDAMOUNT,而是FULL.PAIDAMOUNT。你可以通过UNION LEFT JOIN and RIGHT JOIN实现FULL JOIN

UPD: 同样,在您的情况下,FULL JOIN(以及 LEFT/RIGHT JOIN 也是)对此查询没有任何意义,只要您的 WHERE 条件为 TRUE,仅当 expensemaster.datefeesmaster.datetime 不是时NULL。所以只有INNER JOIN 在这种情况下有效。

【讨论】:

  • 可以写成查询形式吗?
【解决方案2】:

您的错误是未知列,这基本上意味着在feesmaster 表中没有PAIDAMOUNT 列(可能是错字?)。

【讨论】:

  • 在问题开头的示例中,有一个示例说明使用 INNER JOIN 并且 SUM(feesmaster.PAIDAMOUNT) 在列列表中时的结果。
  • 他所做的只是从 INNER 更改为 FULL,没有进行其他编辑。