164

在尝试执行此更新查询时,我不断收到 MySQL 错误 #1054:

UPDATE MASTER_USER_PROFILE, TRAN_USER_BRANCH
SET MASTER_USER_PROFILE.fellow=`y`
WHERE MASTER_USER_PROFILE.USER_ID = TRAN_USER_BRANCH.USER_ID
AND TRAN_USER_BRANCH.BRANCH_ID = 17

这可能是一些语法错误,但我尝试使用内部连接和其他更改,但我一直收到相同的消息:

Unknown column 'y' in 'field list' 
4

13 回答 13

211

尝试为“y”使用不同的引号,因为标识符引号字符是反引号(“`”)。否则 MySQL“认为”你指向一个名为“y”的列。

另请参阅MySQL 5 文档

于 2009-08-28T10:57:59.420 回答
62

将要传递给 MySQL 服务器的任何字符串括在单引号内,例如:

$name = "my name"
$query = " INSERT INTO mytable VALUES ( 1 , '$name') "

请注意,尽管查询用双引号括起来,但您必须将任何字符串括在单引号中。

于 2009-12-29T11:45:09.830 回答
17

您可以检查您选择的引号(对值、字符串等使用双引号/单引号,对列名使用反引号)。

由于您只想更新表master_user_profile,我建议使用嵌套查询:

UPDATE
   master_user_profile
SET
   master_user_profile.fellow = 'y'
WHERE
   master_user_profile.user_id IN (
      SELECT tran_user_branch.user_id
      FROM tran_user_branch WHERE tran_user_branch.branch_id = 17);
于 2009-08-28T11:08:12.237 回答
4

只是分享我在这方面的经验。我遇到了同样的问题。插入或更新语句是正确的。我还检查了编码。该列确实存在。然后!我发现我正在引用触发器中的列。您还应该检查您的触发器,看看是否有任何脚本引用了您遇到问题的列。

于 2019-11-20T02:11:11.660 回答
4

就我而言,这是由列名末尾的一个看不见的尾随空格引起的。只需检查您是否真的使用“y”或“y”。

于 2016-10-21T10:26:36.710 回答
2

在首先使用 EF 代码构建 .Net 应用程序时,我在尝试将我的迁移应用到我有Sql("UPDATE tableName SET columnName = value");声明的地方时收到此错误消息。

原来我拼错了 columnName。

于 2018-02-14T09:59:48.797 回答
2

只是分享我在这方面的经验。我遇到了同样的问题。我的查询是这样的:

select table1.column2 from table1

但是,table1 没有 column2 列。

于 2020-02-01T04:43:53.477 回答
1

如果是hibernate和JPA。检查您引用的表名和列可能不匹配

于 2019-07-24T06:30:32.410 回答
1

在我的情况下,Hibernate 正在寻找蛇案例中的列,例如create_date,而 DB 中的列在骆驼案例中,例如createDate. 添加

spring:
  jpa:
    hibernate:
      naming: # must tell spring/jpa/hibernate to use the column names as specified, not snake case
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
        implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl

帮助application.yml解决问题。

于 2020-12-23T13:02:52.270 回答
1

在我的例子中,我为表格使用了自定义表格别名FROM,但我在字段列表中使用了默认表格别名 ( MyTable) 而不是自定义表格别名 ( t1)。例如,我需要改变这个......

mysql> SELECT MyTable.`id` FROM `MyTable` t1;

……到这……

mysql> SELECT t1.`id` FROM `MyTable` t1;
于 2021-09-15T17:11:31.707 回答
0

像这样的查询也会导致错误:

SELECT table1.id FROM table2

表在列选择中指定且未包含在 from 子句中的位置。

于 2017-05-16T16:58:56.963 回答
0

我也遇到了同样的错误,我的问题是我在GROUP BY子句中包含了列名,它导致了这个错误。所以从GROUP BY子句中删除了列,它起作用了!!!

于 2018-06-28T05:55:29.237 回答
0

在 MySQL 数据库上通过 LINQ 使用 GroupBy 时出现此错误。问题是 GroupBy 使用的匿名对象属性与数据库列名不匹配。通过重命名匿名属性名称以匹配列名称来修复。

.Select(f => new 
{
   ThisPropertyNameNeedsToMatchYourColumnName = f.SomeName
})
.GroupBy(t => t.ThisPropertyNameNeedsToMatchYourColumnName);
于 2019-07-31T19:07:36.173 回答