【问题标题】:#1054 - Unknown column in 'where clause'#1054 - “where 子句”中的未知列
【发布时间】:2021-07-22 17:55:54
【问题描述】:

我在mysql数据库中有这个查询:

INSERT INTO `table1`( `text1`, `text2`, `link` )

SELECT 
    `text1`,
    `text2``,
    `link`

FROM `table2`

WHERE `table1`.`code` = `table2`.`code`;

我收到一个错误:

#1054 - Unknown column 'table1.code' in 'where clause'

我做错了什么?我没有别名,我尝试了HAVING 而不是WHERE,我尝试了INNER JOIN 但没有成功。我的 code 列没有索引。

【问题讨论】:

  • 不清楚。在 SELECT 部分使用 table1 的另一个副本或使用 UPDATE - 取决于逻辑。
  • 这个查询毫无意义。你想达到什么目标?
  • @Claus Bönnhoff 有些行有重复的数据,我想更容易地通过。 Ma3x 回答了这个问题。

标签: mysql sql-insert mysql-error-1054


【解决方案1】:

首先,您还应该显示table2 的结构,以便我们更好地帮助您。

否则,错误是由于您的查询中缺少table1。 由于code 不存在于您的INSERT 语句中,我可以假设它是一个自动增量字段。

您的查询(我想,因为我看不到 table2 的定义,如前所述),可能是

SELECT
    t2.text1,
    t2.text2,
    t2.link
FROM table2 AS t2
    INNER JOIN table1 AS t1 ON (t1.code = t2.code)
;

如果table1table2 之间的链接是一对多或多对多,只需在SELECT 关键字后添加DISTINCT 以避免重复结果或更改您的查询

SELECT
    t2.text1,
    t2.text2,
    t2.link
FROM table2 AS t2
WHERE EXISTS (
    SELECT 'x'
    FROM table1 AS t1
    WHERE t1.code = t2.code
)

【讨论】:

  • 谢谢@Ma3x。两种方法都有效。我不知道我的 INNER JOIN 做错了什么。不管怎样,就是这样:)
猜你喜欢
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多