Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何强制Postgresql对任何SQL语句丢失的数据返回None?_Python_Sql_Postgresql - Fatal编程技术网

Python 如何强制Postgresql对任何SQL语句丢失的数据返回None?

Python 如何强制Postgresql对任何SQL语句丢失的数据返回None?,python,sql,postgresql,Python,Sql,Postgresql,我有一张桌子,比如说: id | value 1 | 'a' 2 | 'b' 其中可能缺少某个ID的值。如果我使用迭代解决方案,例如: for item in my_array: data = cursor.execute("""SELECT id from table WHERE value = 'a'""") 如果数据库中没有“a”,我就得不到一个,并且可以处理它,所以对于每个项目,我至少没有一个。 但是如果我想同时做所有的事情,比如: “”“从value=ANY的表中选择

我有一张桌子,比如说:

id | value
1  |  'a'
2  |  'b'
其中可能缺少某个ID的值。如果我使用迭代解决方案,例如:

for item in my_array:
   data = cursor.execute("""SELECT id from table WHERE value = 'a'""")
如果数据库中没有“a”,我就得不到一个,并且可以处理它,所以对于每个项目,我至少没有一个。 但是如果我想同时做所有的事情,比如:

“”“从value=ANY的表中选择id(数组['a','b','c','d'])”


因此,我需要4个响应(包括缺少数据的无响应),虽然它只对SQL中的当前数据给出响应,但您需要生成数据并使用
左连接
。在Postgres中,您可以执行以下操作:

select v.value, t.id
from (values ('a'), ('b'), ('c'), ('d')) v(value) left join
     table t
     on t.value = v.value;

您需要将表与其自身连接起来:

select t.id as orig_id, filtered.id as filtered_id
from <table> t
left join(
    select * from <table> where value = ANY(ARRAY[29, 30, 31, 32])
) filtered
on t.id = filtered.id
order by t.id

左连接之前,需要在不同id上进行交叉连接。
orig_id |filtered_id |
--------|------------|
...
22      |            |
27      |            |
28      |            |
29      |29          |
30      |30          |