SQL查询 - 使用“无”过滤掉列值

时间:2016-08-09 04:41:50

标签: python sql postgresql psycopg2

我有一个名为raw的PSQL数据库,其中一个列是选项,类型为VARCHAR。值为“Call”,“Put”或“None”。

我想选择选项字段的值不是'Call'或'Put'的所有行,而是选择None。

但是,当我运行此查询时:

curr.execute('SELECT * FROM holdings h WHERE option != \'Call\' AND option != \'Put\';')

没有任何回复

如果我跑:

curr.execute('SELECT * FROM holdings h WHERE option != \'Call\';')

我只获得带有选项值='Put'

的行

如何选择None获取行,而不仅仅是设置差异。理想情况下,我希望能够选择那些不是'Call'和'Put'的行,而不会调用所有行的差异以及那些具有'Call'和'Put'的行

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

SELECT * FROM holdings h WHERE option =''

答案 1 :(得分:0)

如果您要选择包含null选项的行,则必须通过option IS NULL指明:

SELECT * FROM holdings WHERE option IS NULL

而不是option != 'Call' AND option != 'Put'您可以使用option NOT IN ('Call', 'Put')

SELECT * FROM holdings WHERE option NOT IN ('Call', 'Put')

OR

一起加入
SELECT * FROM holdings WHERE option NOT IN ('Call', 'Put') OR option IS NULL