如何使用輸入值陣列選擇行,其中任何重復的輸入值都會得到相應的重復輸出?
例子:
我的表是:
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)
更多解釋:
我們可以使用輸入值陣列和 IN 運算子來選擇行。
但是陣列中的重復值被忽略:它有效地將不同的輸入值作為一個集合使用。
我想從 N 個輸入值中獲得 N 個輸出,即使某些輸入是重復的。
注意:我使用的是來自 python3 的 PostgreSQL 12.9 和 psycopg2,盡管這可能沒有什么區別。
uj5u.com熱心網友回復:
您可以取消嵌套陣列并將其與您的表連接:
select *
from myTable m
join unnest(array[1,1,2,3,3]) keys (k)
on m.key = keys.k
db<>在這里擺弄
uj5u.com熱心網友回復:
您可以在 CTE 中select使用union您的鑰匙,然后join將其放到您的桌子上:
with keys as
(select 1 as key
union all select 1
union all select 2
union all select 3
union all select 3)
select name
from keys natural join myTable;
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/443421.html
標籤:PostgreSQL
上一篇:選擇行的子集
