错误:在“SELECT”附近有语法错误。

10

我是一个对于postgres非常陌生的人。这个问题看起来非常简单,但我就是看不出错在哪里。

我创建了一个如下所示的表:

  CREATE TABLE IF NOT EXISTS t(
        tn VARCHAR(30) NOT NULL,
        PRIMARY KEY(tn)
    );

如果实例不存在,我希望插入一个实例。以下是我的代码:
INSERT INTO t (tn) 
VALUES 
(SELECT 'q' WHERE NOT EXISTS (SELECT * FROM t WHERE tn = 'q')) ;

而且psql控制台一直给我报错

ERROR:  syntax error at or near "SELECT"

我已经逐个检查了每一段代码,例如这两个

SELECT 'q' WHERE NOT EXISTS (SELECT * FROM t WHERE tn = 'q');

and

INSERT INTO t (tn) VALUES ('p');

这些代码单独运行没有错误。但当我将它们放在一起时,就出现了错误。

有人知道我哪里出错了吗..?


挑剔一点,但是正确的写法是“postgres”或“postgresql”。并不存在“postgre”或“postgress”这样的单词。是的,我们知道这个名字很蠢。 - Craig Ringer
1个回答

7
失去VALUES和括号...
INSERT INTO t (tn) 
SELECT 'q' WHERE NOT EXISTS (SELECT * FROM t WHERE tn = 'q');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接