我想要一个查询,如果值不存在,则检索结果。例如:select * from the table.A where column1 in (1,2,3)如果存在2,3个值,那么结果将是2和3。但是我需要的值是表中没有的,即1。任何帮助是非常感谢!
select * from the table.A where column1 in (1,2,3)
rkue9o1l1#
你可以像这样创建一个值列表:
VALUES (1),(2),(3)
字符串从另一个结果中排除一个结果可以使用EXCEPT来完成。参见documentation。您可以一起执行以下操作:
EXCEPT
VALUES (1),(2),(3) EXCEPT SELECT column1 FROM yourtable;
型例如,对于此示例数据:| column1 || ------------ || 2 || 3 || 4 |上述查询的结果将是:| column1 || ------------ || 1 |看到这个fiddle example
lb3vh1jj2#
你的问题很模糊,你想:1.不存在的项目(如其他人提供的)?1.现有项目的值和不存在项目的null?如果您正在寻找后者,那么您需要创建一个包含所需值的对象,然后LEFT连接现有表。(参见demo)
null
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可以是另一个表。
2条答案
按热度按时间rkue9o1l1#
你可以像这样创建一个值列表:
字符串
从另一个结果中排除一个结果可以使用
EXCEPT
来完成。参见documentation。您可以一起执行以下操作:
型
例如,对于此示例数据:
| column1 |
| ------------ |
| 2 |
| 3 |
| 4 |
上述查询的结果将是:
| column1 |
| ------------ |
| 1 |
看到这个fiddle example
lb3vh1jj2#
你的问题很模糊,你想:
1.不存在的项目(如其他人提供的)?
1.现有项目的值和不存在项目的
null
?如果您正在寻找后者,那么您需要创建一个包含所需值的对象,然后LEFT连接现有表。(参见demo)
字符串
CTE可以是另一个表。