postgresql 从where条件参数返回一个值;如果表中不存在

sirbozc5  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(2)|浏览(162)

我想要一个查询,如果值不存在,则检索结果。
例如:select * from the table.A where column1 in (1,2,3)如果存在2,3个值,那么结果将是2和3。
但是我需要的值是表中没有的,即1。
任何帮助是非常感谢!

rkue9o1l

rkue9o1l1#

你可以像这样创建一个值列表:

VALUES (1),(2),(3)

字符串
从另一个结果中排除一个结果可以使用EXCEPT来完成。参见documentation
您可以一起执行以下操作:

VALUES (1),(2),(3)
EXCEPT
SELECT column1 FROM yourtable;


例如,对于此示例数据:
| column1 |
| ------------ |
| 2 |
| 3 |
| 4 |
上述查询的结果将是:
| column1 |
| ------------ |
| 1 |
看到这个fiddle example

lb3vh1jj

lb3vh1jj2#

你的问题很模糊,你想:
1.不存在的项目(如其他人提供的)?
1.现有项目的值和不存在项目的null
如果您正在寻找后者,那么您需要创建一个包含所需值的对象,然后LEFT连接现有表。(参见demo

with wanted(id) as 
     ( values (1), (2), (3) ) 
select wanted.id wanted
     , tl.<col>
     -- ...
  from wanted
  left join <some_table> t1
         on t1.<some_col> = wanted.id
 order by wanted.id;

字符串
CTE可以是另一个表。

相关问题