小编Jos*_*rns的帖子

PostgreSQL中具有主键的重复行

假设我有一个名为 的表people,其中id是主键:

+-----------+---------+---------+
|  id       |  fname  |  lname  |
| (integer) | (text)  | (text)  |
+===========+=========+=========+
|  1        | Daniel  | Edwards |
|  2        | Fred    | Holt    |
|  3        | Henry   | Smith   |
+-----------+---------+---------+
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个行重复查询,该查询足够健壮,可以解释表的架构更改。每当我向表中添加一列时,我都不想回去修改重复查询。

我知道我可以做到这一点,这将复制记录 ID 2 并为复制的记录提供一个新 ID:

INSERT INTO people (fname, lname) SELECT fname, lname FROM people WHERE id = 2;
Run Code Online (Sandbox Code Playgroud)

但是,如果我添加一age列,则需要修改查询以同时考虑年龄列。

显然我不能执行以下操作,因为它还会复制主键,从而导致duplicate key value violates unique constraint-- 而且,无论如何我都不希望它们共享相同的 ID:

INSERT INTO people …
Run Code Online (Sandbox Code Playgroud)

postgresql dynamic-sql default-value postgresql-9.4

8
推荐指数
1
解决办法
2万
查看次数

PostgreSQL:查询数据库中包含整数 [] > 或 < 超过指定值的行

我有一个表,它存储过去 5 天的历史温度,存储在基于城市的整数 [] 列中。问题是:如何查询值大于或小于指定值的条目?这是一个示例表:

+=========+==================+
| city    | temps            |
+=========+==================+
| Seattle | {65,72,63,56,72} |
+---------+------------------+
| Miami   | {83,75,69,72,79} |
+---------+------------------+
Run Code Online (Sandbox Code Playgroud)

假设我想查询温度高于 80 的城市。在此示例中,只有迈阿密的温度高于 80,因此只应返回该行。我尝试了一些没有成功的查询,查看了 intarray,但这似乎也不能解决我的问题。非常感谢!

我正在运行 PostgreSQL 9.1

postgresql postgresql-9.1

7
推荐指数
2
解决办法
1567
查看次数