Postgresql 从表中选择名称,其中数组中的名称和值=0 | | 1取决于名称
我想获取一些数据,但查询给我带来了麻烦。我尝试了很多不同的方法,但似乎无法获取。下面的信息是简化了很多,但应该给我什么我需要的基础Postgresql 从表中选择名称,其中数组中的名称和值=0 | | 1取决于名称,postgresql,Postgresql,我想获取一些数据,但查询给我带来了麻烦。我尝试了很多不同的方法,但似乎无法获取。下面的信息是简化了很多,但应该给我什么我需要的基础 table id name value 0 config1 1 0 config2 0 1 config1 0 1 config2 0 2 config1 0 2 config2 1 3 config1 1 3 config2 1 所以我想做的是: 从表中选择*,其中(名称='config1'和值='1')和(名称='config2'和值='0') 我想看到的结果
table
id name value
0 config1 1
0 config2 0
1 config1 0
1 config2 0
2 config1 0
2 config2 1
3 config1 1
3 config2 1
所以我想做的是:
从表中选择*,其中(名称='config1'和值='1')和(名称='config2'和值='0')
我想看到的结果是:
config1 1 (this is the only important one)
config2 0 (I don't really care to see this row either)
我基本上只需要名称为config1且值为1的任何对象的数据,但仅当config2的值为0时才需要。注意:让我们假设我没有访问id的权限(它是从另一个查询生成的,而我们正在运行的查询实际上是在不同的数据库上运行的,因此对每个数据库实际上是唯一的,我们每个数据库只能有一个config1或一个config2)。尝试以下操作:
SELECT * FROM table
WHERE name = 'config1' AND value = '1'
AND id IN (SELECT id FROM table WHERE name = 'config2' AND value = '0')
您的查询不起作用,因为您的WHERE条件从来不会同时应用于多行,而只能单独应用于每行。您需要的是一个相关子查询,或者可能是一个自连接。