我們有一個包含名稱及其 ID 的表,例如:
1 | John
2 | Mary
3 | Ann
...
給出了一組 ID。例如,{1,4,7}。我需要獲取與這些 ID 對應的名稱陣列。
我應該如何制定WHERE條件?
以及如何回傳一個陣列?
uj5u.com熱心網友回復:
使用 IN 子句
Select name from table1 where id in (1,4,7)
https://www.w3schools.com/sql/sql_in.asp
uj5u.com熱心網友回復:
傳遞一個陣列并接收一個陣列:
SELECT ARRAY (SELECT name FROM tbl WHERE id = ANY ('{1,4,7}'));
我正在傳遞一個陣列文字(一個常量)。無需強制轉換即可作業,而陣列的元素型別可以強制轉換為從比較的列型別派生的型別。否則,向陣列添加顯式型別轉換:
SELECT ARRAY (SELECT name FROM tbl
WHERE id = ANY ('{2021-01-03, 2021-01-04}'::date[]))
關于IN與= ANY:
- 如何在 Rails 的 WHERE 子句中使用 ANY 而不是 IN?
- PostgreSQL 中的 IN 與 ANY 運算子
關于陣列建構式:
- 為什么 array_agg() 比非聚合 ARRAY() 建構式慢?
uj5u.com熱心網友回復:
另一種選擇:(unnest規范化)陣列,加入表,然后聚合:
select array_agg(t."name")
from the_table t
join unnest('{1,4,7}'::integer[]) aid on t.id = aid;
或使用array建構式
select array
(
select t."name"
from the_table t
join unnest('{1,4,7}'::integer[]) aid on t.id = aid
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/361799.html
標籤:sql 数组 PostgreSQL的
上一篇:檢查lisp中陣列的每個元素
