我可以使用CASE选择在SELECT查询(Postgres)中显示哪些列,如下所示:
SELECT CASE WHEN val = 0 THEN column_x
WHEN val = 1 THEN column_y
ELSE 0
END AS update, ...
在Postgres中执行UPDATE查询时(即选择应该更新哪些列),是否有类似的情况?我认为没有,因为我找不到这方面的任何东西,但是也许有人有一个聪明的选择(除了使用一个过程或使用一个CASE更新每个列以确定该列的值是否应该被分配到一个新值或简单地重新分配现有的值)。
我是postgres的新手,我试图更新状态为空或新的列。下面的查询验证的是新值,但不是空字符串/空值。有办法做到这一点吗?
update test_table c
set FLAG = -1, err_det='Incorrect entry'
where FName is not null and Status in ('NEW','')
此查询在函数中使用。
假设我有一个包含int列的表,我将从其中读取的只是MAX() int值。
可以,您可以创建触发器来更新跟踪MAX值的单行表,并查询该表,而不是对主表发出MAX()。但我正在寻找一些优雅的东西,因为我知道Postgres有部分索引,而我似乎找不到一种方法来利用它们来达到这个目的。
更新:这个部分索引定义在理想情况下是我想要的,但是Postgres不允许在部分索引的WHERE子句中使用子查询。
create index on test(a) where a = (select max(a) from test);
我想知道是否可以/如何在一个查询中使用不同的列更新多个记录。
所以我有张桌子
Test {
id integer
name varchar
age integer
}
那么对于test1和测试2,我有
test1 = Test {id=1, name="Joe"}
test2 = Test {id=2, age=22}
即使每个查询都在更新一个不同的列,是否可以使用一个查询来更新这两个列呢?
如果我有多个具有相同字段的对象,如下所示:
UPDATE test as t
SET id = u.id, age = u.age, name = u.name
FR
我是Postgres新手。我想让我的日期字段的默认值具有分钟和秒的粒度。 ALTER TABLE engagements ALTER COLUMN event_date SET DEFAULT now(); 但是,当我添加新的行和查询时,我看到的只是7-6-2020,它没有我想要的粒度。我该如何解决这个问题呢?
我正在尝试转换存储在Postgres的HSTORE列(' data ')中的数据。
我的行值有键“实体”,值在数组中。
"entity"=>"[{'id': .............}]
我使用了以下代码:
Alter TABLE my_table
ALTER COLUMN h_store_column TYPE jsonb
USING hstore_to_jsonb_loose(data -> 'entity');
这导致值作为新列中的输出,如下所示:
"[{'id'
空值和所有列都为空的行类型之间有什么区别吗?Postgres查询似乎能够分辨出两者的区别(显示空列而不是空列),我想知道是否有什么我应该知道的。例如:
CREATE TYPE node AS (
rank integer
, id integer
);
CREATE TABLE hierarchy (
node node
);
INSERT INTO hierarchy (node) VALUES (null);
INSERT INTO hierarchy (node) VALUES ((null, null));
SELECT *, node IS NULL AS che
我有一个查询需要从一个完全满足两列要求的表中提取。因此,如果我有包含列age和score的users表。 SELECT * FROM users where (age, score) IN ((5,6), (9,12), (22,44)..); 在我的web应用程序中,我从ajax请求中获得了这些对,这个数字可能会相当大。如何在Django中为此构造一个查询? 我正在处理Postgres数据库
首先,我对Postgres是新手,所以我可能描述错了这个问题,所以如果已经回答了,请给我一个答案。
我有一个有10列的数据库。假设4列都对值使用相同的代码(即字母a、b、d、e),我希望将查询中的所有这些都重命名为它们与另一个表中的值匹配的名称。
在这个阶段,我有一个非常长的方法,涉及嵌套语句。有什么简单的方法可以说:
table1
id | col1 | col2 | col3 | col4
------+------+------+------+------
Row_1 | a | c | d | e
Row_2 | c | c | c | c
我正在用Postgres (全是localhost)中的GIN索引进行全文搜索,当我编写自己的查询并在psql中运行它时,我得到了很好的响应时间,EXPLAIN ANALYZE报告了一个索引命中(woohoo),但是当使用相同的搜索词通过Django Admin搜索框查询时,索引不会被扫描,查询要花费很长时间才能完成。
我的索引是通过创建的。
CREATE INDEX name_gin ON entity USING gin (name gin_trgm_ops);
该查询按下索引,并使用一个引人注目的84ms搜索900 k全文记录:
SELECT COUNT(*)
FROM entity
对postgres来说是新的。
我在Postgres中有一个名为"customer_id“的列,目前定义为”字符变化“。
在DB中,很多行都是空的。
我需要这个列是一个可能为空值的整数。
我怎么能在postgres做到这一点?
我试着运行查询:
alter table leads alter column customer_id type INTEGER using CAST("customer_id" as INTEGER);
但我说错了:
default for column "customer_id" cannot be cast automa
我使用postgres 9.3进行全文搜索,并运行如下查询
select * from jobs where fts @@ plainto_tsquery('pg_catalog.english','search term');
我得到了正确的结果,然而,我希望能够得到一部分搜索结果,与搜索的条件相匹配。FTS列只是description列的to_tsvector()。我想要做的是展示一个简短的描述,并突出了术语。对我如何做到这一点有什么想法吗?
为什么这个查询:
SELECT inv.batch_number_id AS batch_number_id,
inv.expiry_date AS expiry_date,
inv.facility_id AS facility_id,
inv.id AS id,
fac.code AS facility_code,
inv_st.description AS status,
bn.batch_nbr AS batch_number,
bn.expiry_date AS batch_expiry_date,
sum(CASE WHEN al.s