数据库存在该列却提示列不存在:MySQL错误#1054排查求助
解决SQL报错#1054 - Unknown column 'gen_cityname' in 'where clause'的问题
我一眼就揪出问题所在了——你的子查询result里根本没把gen_cityname列包含进来!外层查询的WHERE条件只能用子查询返回的字段,而你当前的子查询只选了bgycode(自增序号的别名)、scc_bgyscoretotal和id这三个列,MySQL自然找不到gen_cityname。
修复方案
把gen_cityname加到子查询的SELECT列表里就行,这样外层查询就能访问到这个列了。另外要注意:如果XXXXXX是字符串类型的城市名,记得给它加单引号,不然MySQL会把它当成列名处理,照样报错。修改后的SQL如下:
SET @rownum := 0; SELECT bgycode, scc_bgyscoretotal FROM ( SELECT @rownum := @rownum + 1 AS bgycode, scc_bgyscoretotal, id, gen_cityname FROM bgyprofile ORDER BY scc_bgyscoretotal DESC ) as result WHERE gen_cityname='XXXXXX';
额外验证点
- 可以用
DESCRIBE bgyprofile;命令再确认一遍,确保bgyprofile表中确实存在gen_cityname列,避免是拼写错误导致的问题 - 如果
XXXXXX是数值类型,就不用加单引号;但如果是字符串,单引号必须加,这是SQL的基础语法要求
内容的提问来源于stack exchange,提问作者Yuuki
相关产品推荐
相关产品推荐

