【问题标题】:sql statement error: "column .. does not exist"sql语句错误:“列..不存在”
【发布时间】:2012-04-18 10:06:56
【问题描述】:

我正在从 postgres 控制台尝试这个命令:

select sim.id as idsim, 
       num.id as idnum 
from main_sim sim 
  left join main_number num on (FK_Numbers_id=num.id);

我收到了这样的回复:

错误:列“fk_numbers_id”不存在 LINE 1: ...m from main_sim sim left join main_number num on (FK_Numbers...

但如果我只是检查我的表:

dbMobile=# \d main_sim

 id              | integer               | not null default

 Iccid           | character varying(19) | not null

...

 FK_Device_id    | integer               | 

 FK_Numbers_id   | integer               | 

Indexes:
    "main_sim_pkey" PRIMARY KEY, btree (id)
    "main_sim_FK_Numbers_id_key" UNIQUE, btree ("FK_Numbers_id")
    "main_sim_Iccid_key" UNIQUE, btree ("Iccid")
    "main_sim_FK_Device_id" btree ("FK_Device_id")
Foreign-key constraints:
    "FK_Device_id_refs_id_480a73d1" FOREIGN KEY ("FK_Device_id") REFERENCES main_device(id) DEFERRABLE INITIALLY DEFERRED
    "FK_Numbers_id_refs_id_380cb036" FOREIGN KEY ("FK_Numbers_id") REFERENCES main_number(id) DEFERRABLE INITIALLY DEFERRED

...我们可以看到该列存在。

可能是语法错误,但我看不到是什么...

任何帮助将不胜感激。 阿莱西奥

【问题讨论】:

  • 你试过sim.FK_Numbers_id而不是FK_Numbers_id吗?
  • 尝试在引号中输入 FK_Numbers_id,例如“FK_Numbers_id”。作为一个建议:永远不要在 sql 中使用 mized case。

标签: sql postgresql quoted-identifier


【解决方案1】:

不,FK_Numbers_id 列不存在,只有"FK_Numbers_id" 列存在

显然您使用双引号创建了表,因此所有列名现在都区分大小写,您必须始终使用双引号:

select sim.id as idsim, 
       num.id as idnum 
from main_sim sim 
   left join main_number num on ("FK_Numbers_id" = num.id);

回顾一下documented in the manual

fooFOO 列相同,"foo""FOO" 列不同。

【讨论】:

  • +1 我很难相信这是真的,因为它看起来很疯狂,但这是sorta working demo。我不得不给第二列起别名,因为 sqlfiddle 可能没想到两次“相同”的名称。
  • @ConradFix:这就是 SQL 标准的定义方式(略有不同的是标准要求所有名称都折叠成大写)
  • @AlessioTomelleri:您需要用双引号将列名括起来,正如我在回答中所示。那些引言会有所作为!
  • @wildplasser :是的,我想我会按照我的建议去做
  • @a_horse_with_no_name :看来,您遇到了问题……带引号就可以了。老实说,我错过了告诉你有关 django 的信息。 Django 直接执行了 sql "create" 语句,似乎它是使用引号创建的……感谢您的帮助
猜你喜欢
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多