删除行和特定条件

时间:2015-08-18 14:56:37

标签: sql postgresql sql-delete

我正在尝试执行this之类的操作,但我不断收到“HELLO”列不存在的错误。我想要运行的查询是:

delete from lib."table1" where "word"<>"HELLO" and "Language"="English"

基本上我试图删除“语言”列中包含英语的所有行,但不删除“word”列中包含“HELLO”的行。因此它应该跳过Language = English和word = HELLO的行,但是删除所有其他行,其中包括语言中的英语或单词中的HELLO。我究竟做错了什么? (如果我拿出“word ... ELLO”部分,它可以正常工作但删除每一个英文行)。

2 个答案:

答案 0 :(得分:3)

对于postgres,双引号不用于字符串,而是用于列名等

delete from lib."table1" where "word"!='HELLO' and "Language"='English'

答案 1 :(得分:2)

对字符串文字使用单引号,对列名使用双引号:

delete from lib."table1" where word <> 'HELLO' and Language = 'English';

旁注:如果你想保留列中包含单词的英语行(例如匹配'Hello World'),那么你可能想要使用not like运算符来代替:

delete from table1 
where word not like concat('%','HELLO','%') and Language = 'English';