2017-03-23 48 views
1

这是我发现的一个非常有趣的问题。无法在PostgreSQL中使用select子句

这里是我的表的快照 majorversions Table

现在我试图执行一个简单的SELECT语句

select * from majorversions mav 
where mav.name = "Default-Media" 

它抛出

********** Error ********** 

ERROR: column "Default-Media" does not exist 
SQL state: 42703 
Character: 53 

它主要发生由于错误事实名称columnType是文本,如果我用户client_id在where子句中一切正常。

那么如何写一个名称为Column的where子句呢?

+2

使用单引号的字符串,就像''Default-Media''。双引号引用一个名为Default-Media的列。 – Andomar

+0

[PostgreSQL中的DISTINCT WHERE查询]的可能重复(http://stackoverflow.com/questions/12480102/distinct-where-query-in-postgresql) –

+0

https://www.postgresql.org/docs/current/static /sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS –

回答

0

对于字符串使用单引号。 如果它用双引号括起来,它会认为它是一个列名,并且找不到该列。这就是为什么你会得到这个错误。

它应该是:

select * from majorversions mav 
where mav.name = 'Default-Media' 

什么它试图在查询执行的是:

select * from majorversions mav where mav.name = mav.Default-Media 
0

默认,媒体应该写'Default-Media',而不是"Default-Media"