有没有办法LIKE在 ARRAY 字段上进行Postgres查询?
目前我想要这样的东西:
SELECT * FROM list WHERE lower(array_field) LIKE '1234%'
Run Code Online (Sandbox Code Playgroud)
目前不需要那么多。但是它应该在 ARRAY 中找到一个匹配的字段。这甚至可能吗?
目前我使用物化视图来生成带有 JOIN 和 a 的“列表”表ARRAY_AGG(),因为我加入了一个表,其中更多的值可能在正确的表上。这会重复左表中的字段,这不是我想要的。
编辑这就是我创建视图的方式(非常缓慢和丑陋):
CREATE MATERIALIZED VIEW article_list_new AS
SELECT a.id,
a.oa_nr,
a.date_deleted,
a.lock,
a.sds_nr,
a.kd_art_nr,
a.kd_art_index,
a.kd_art_extend,
a.surface,
a.execution,
a.surface_area,
a.cu_thickness,
a.endintensity,
a.drilling,
array_agg(o.id::text) AS offer_list
FROM article_list a LEFT JOIN task_offer o ON o.article = a.oa_nr
GROUP BY .....;
Run Code Online (Sandbox Code Playgroud)
我还需要返回task_offer表的 ID 。
目前,我有一个定义如下的视图:
View "public.customer_list"
Column | Type | Modifiers | Storage | Description
-----------+-------------------------+-----------+----------+-------------
id | bigint | | plain |
name | character varying(100) | | extended |
street | character varying(100) | | extended |
zip | character varying(10) | | extended |
city | character varying(100) | | extended |
country | character varying(3) | | extended |
phone | character varying(100) | | extended |
mail | character varying(100) | | extended |
rating | integer | …Run Code Online (Sandbox Code Playgroud) 是否可以reltuples使用附加条件查询给定表的列table.name LIKE 'hello%'?
目前在我更大的表上,SELECT count(*)查询需要很长时间,我不需要确切的计数。所以我想知道是否可以WHERE在 the 中添加子句reltuples?
目前我有下表:
CREATE TABLE demo (
id SERIAL PRIMARY KEY,
key TEXT NOT NULL,
other_key TEXT NOT NULL,
quantity BIGINT NOT NULL,
date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()
);
Run Code Online (Sandbox Code Playgroud)
现在我想按这样的查询进行分组:
SELECT other_key, SUM(quantity) FROM demo GROUP BY other_key;
Run Code Online (Sandbox Code Playgroud)
到目前为止,效果很好,但是现在我想按键过滤并打印date表的最新信息,有什么好的方法吗?
伪(将失败,因为密钥不在分组依据中)
SELECT other_key, SUM(quantity), MAX(date) FROM demo GROUP BY other_key WHERE key = ?;
Run Code Online (Sandbox Code Playgroud)
我最初的想法是子查询:
SELECT other_key, SUM(quantity), MAX(date) FROM (SELECT * FROM demo WHERE key = ?) GROUP BY other_key;
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?那么什么是该表的良好索引呢?
我当前的索引是:
CREATE INDEX demo_all_idx ON …Run Code Online (Sandbox Code Playgroud)