假设我有一个名为 的表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) 我有一个表,它存储过去 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