PostgreSQL 列名作为两个表中的关键字

Posted

技术标签:

【中文标题】PostgreSQL 列名作为两个表中的关键字【英文标题】:PostgreSQL column name as keyword in two table 【发布时间】:2012-07-11 05:18:55 【问题描述】:

我有 2 个 table1 和 table2

table1
id,desc

table2
id,t1_id,desc

我如何根据 desc="something" 选择行

select * from table1 t1 
left join table2 t2 on t1.id=t2.t1_id 
where t1.desc='something'

表 1 中的数据具有 desc "something" 但没有返回任何内容

我试过了

where "desc"='something'

但给予

不明确的列描述错误。

如何从 postgreSQL 中 desc='something' 的表 1 中检索数据

非常感谢...

【问题讨论】:

【参考方案1】:

使用" 转义保留关键字。

select * from table1 t1 
left join table2 t2 on t1.id=t2.t1_id 
where t1."desc"='something'

但如果列在 2 个表中的名称相等,请不要忘记添加表名或别名。如果不指定表,数据库引擎不知道取哪一个。

【讨论】:

【参考方案2】:

我认为您正在寻找的答案是:

SELECT * from table1 JOIN table2 AS t 
ON t.t1_id = table1.id WHERE table1.desc='something'

【讨论】:

终于找到问题...不得不使用 trim(t1.desc) = 'something'

以上是关于PostgreSQL 列名作为两个表中的关键字的主要内容,如果未能解决你的问题,请参考以下文章

sql关键字作为jpa实体列名的用法

PostgreSQL - 从数据库表中提取列名、数据类型和样本值

解析:内联,左外联,右外联,全连接,交叉连接的区别

满足两个条件的两个表中的相同列名

列名作为分类值时如何画出统计图

Oracle select 语句显示两个表中的匹配列?没有数据,只有两个表中都存在的列名