我需要检索表中的所有行,其中2列组合都是不同的.因此,我希望所有在同一天没有任何其他销售的销售以相同的价格出售.基于日期和价格的唯一销售将更新为活动状态.
所以我在想:
UPDATE sales
SET status = 'ACTIVE'
WHERE id IN (SELECT DISTINCT (saleprice, saledate), id, count(id)
FROM sales
HAVING count = 1)
Run Code Online (Sandbox Code Playgroud)
但是我的大脑比那更远了.
我有两张桌子:
A [ID, column1, column2, column3]
B [ID, column1, column2, column3, column4]
Run Code Online (Sandbox Code Playgroud)
A将永远是其子集B(意味着所有列A也在其中B).
我想更新具有特定ID输入的记录,其中B包含来自A所有列的数据A.这ID存在于A和B.
是否有UPDATE语法或任何其他方法来指定列名称,只是说"设置A的所有列"?
我正在使用PostgreSQL,因此也接受了一个特定的非标准命令(但不是首选).
想要查找某个json列包含空对象的所有行,{}.这可以使用JSON数组,或者如果我在对象中查找特定键.但我只是想知道对象是否为空.似乎找不到会这样做的运营商.
dev=# \d test
Table "public.test"
Column | Type | Modifiers
--------+------+-----------
foo | json |
dev=# select * from test;
foo
---------
{"a":1}
{"b":1}
{}
(3 rows)
dev=# select * from test where foo != '{}';
ERROR: operator does not exist: json <> unknown
LINE 1: select * from test where foo != '{}';
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
dev=# select * from …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 postgres 中实现一个 upsert(一个插入约束更新)。这是我的 sql 的样子:
INSERT into "foo" ("bar", "moo", "baz") VALUES (1, 2, 3), (3, 4, 5)
ON CONFLICT ON CONSTRAINT "composite_primary_key" DO NOTHING
Run Code Online (Sandbox Code Playgroud)
我想修改 DO NOTHING允许我更新该行的所有字段的内容。我不确定语法应该是什么,因为文档没有解释它,也没有例子可以做到这一点。
谢谢!
给定以下架构:
create table account_type_a (
id SERIAL UNIQUE PRIMARY KEY,
some_column VARCHAR
);
create table account_type_b (
id SERIAL UNIQUE PRIMARY KEY,
some_other_column VARCHAR
);
create view account_type_a view AS select * from account_type_a;
create view account_type_b view AS select * from account_type_b;
Run Code Online (Sandbox Code Playgroud)
我尝试在plpgsql中创建一个通用的触发器函数,它可以更新视图:
create trigger trUpdate instead of UPDATE on account_view_type_a
for each row execute procedure updateAccount();
create trigger trUpdate instead of UPDATE on account_view_type_a
for each row execute procedure updateAccount();
Run Code Online (Sandbox Code Playgroud)
我的不成功的努力是:
create function updateAccount() returns trigger …Run Code Online (Sandbox Code Playgroud) postgresql ×5
sql ×4
dynamic-sql ×2
sql-update ×2
distinct ×1
duplicates ×1
json ×1
jsonb ×1
plpgsql ×1
triggers ×1
types ×1
upsert ×1