在尝试执行此更新查询时,我一直收到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'
答案 0 :(得分:131)
尝试对“y”使用不同的引号,因为标识符引号字符是反引号(“`”)。否则MySQL“认为”你指向一个名为“y”的列。
答案 1 :(得分:41)
将任何字符串包含在单引号内传递给mysql服务器; e.g:
$name = "my name"
$query = " INSERT INTO mytable VALUES ( 1 , '$name') "
请注意,虽然查询用双引号括起来,但必须用单引号括起任何字符串。
答案 2 :(得分:16)
您可以检查您的引号选择(对值,字符串等使用双引号或单引号以及列名称的反引号)。
由于您只想更新表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);
答案 3 :(得分:3)
在我的情况下,它是由列名末尾的一个看不见的尾随空格引起的。只需检查您是否真的使用“y”或“y”。
答案 4 :(得分:1)
在使用EF代码构建.Net应用程序构建时,我在尝试应用迁移时收到此错误消息,其中包含Sql("UPDATE tableName SET columnName = value");
语句。
原来我拼错了columnName。
答案 5 :(得分:1)
只需分享我的经验即可。我遇到了同样的问题。我的查询就像:
select table1.column2 from table1
但是,表1没有column2列。
答案 6 :(得分:1)
在我的例子中,Hibernate 正在寻找蛇形的列,比如 create_date
,而数据库中的列是驼峰形的,例如 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
帮助解决了问题。
答案 7 :(得分:0)
像thi这样的查询也会导致错误
select table1.id from table2
如果在select列中指定了表,并且未包含在from子句中。
答案 8 :(得分:0)
我也遇到相同的错误,我的问题是我在GROUP BY
子句中包含了列名,这导致了此错误。因此,从GROUP BY
子句中删除了该列,它起作用了!!
答案 9 :(得分:0)
如果它是休眠和JPA。检查您引用的表名和列可能不匹配
答案 10 :(得分:0)
在MySQL数据库上通过LINQ使用GroupBy时出现此错误。问题是GroupBy使用的匿名对象属性与数据库列名称不匹配。通过重命名匿名属性名称以匹配列名称来解决。
.Select(f => new
{
ThisPropertyNameNeedsToMatchYourColumnName = f.SomeName
})
.GroupBy(t => t.ThisPropertyNameNeedsToMatchYourColumnName);
答案 11 :(得分:0)
只需分享我的经验即可。我遇到了同样的问题。插入或更新语句正确。而且我还检查了编码。该列确实存在。 然后!我发现我在触发器中引用了该列。 您还应该检查触发器,看看是否有任何脚本在引用您遇到问题的列。