如何使用输入值数组 Select 行,其中任何重复的输入值都会得到相应的重复输出?

Example:

我的表格是:

 key | name  
-----+-------
   1 | Alice
   2 | Bob
   3 | Chuck

SELECT name FROM myTable WHERE key IN (1,1,2,3,3);

给予:

 name  
-------
 Alice
 Bob
 Chuck
(3 rows)

这会忽略输入数组中的重复.我想得到这个输出:

 Alice
 Alice
 Bob
 Chuck
 Chuck
(5 rows)

More explanation:

We can select rows using an array of input values 和 the IN operator.

但数组中的重复值被忽略:它有效地将不同的输入值作为一个集合使用.

我想从N个输入值中得到N个输出,即使有些输入是重复的.

Note: I am using PostgreSQL 12.9 和 psycopg2 from python3, though that presumably makes no difference.

推荐答案

可以取消数组的嵌套并将其与表联接:

select * 
from myTable m
join unnest(array[1,1,2,3,3]) keys (k)
on m.key = keys.k

db<>fiddle 100

Postgresql相关问答推荐

从子查询中的排序结果中获取前X行

如何在查询空字段时设置pgtype.comb为默认值?

此PostgreSQL汇总分组不适用于窗口表达式

我需要一个变量来引用上周的星期五

在Postgres中如何连接具有相同名称列的表并更改列名称?

如何重新格式化已获取的 psql 查询输出?

postgres vacuum 是否改进了我的查询计划

表示 SQL 表的 Go struct

在 Age Viewer 上看不到 node 的第一个属性

订阅标签保存在哪个表中?

Django 1.8 数组字段追加和扩展

Postgres 在 WHERE id != int 查询中排除 NULL

将 PostgreSQL 配置为仅适用于 LOCALHOST 或指定的 ip + 端口

django.db.utils.IntegrityError:duplicate key value violates unique constraint "django_content_type_pkey"

try 为 ror 应用程序设置 postgres,出现错误 - fe_sendauth:no password supplied

在 PGAdmin 中搜索所有功能的文本

Postgresql:备份所有表 struct ,但只备份少数数据表

Postgis / Geodjango:无法确定数据库的 PostGIS 版本

IF处或附近的 Postgres 语法错误

Postgresql 对象 ID 和元组