【发布时间】:2012-06-02 23:05:27
【问题描述】:
我今天有一个白痴日。我确信这相对简单,但我的大脑并没有给出答案。
我有一个表,其行是对象类型。看起来像这样:
id name foo bar house_id
1 Cat 12 4 1
2 Cat 9 4 2
3 Dog 8 23 1
4 Bird 9 54 1
5 Bird 78 2 2
6 Bird 29 32 3
这不是我选择的实现方式,但我正在使用它。对象(猫、狗和鸟,在现实生活中它们是实际的商业事物)已临时添加到表中。当 house_id 1 需要猫时,会输入一条猫的记录。当 house_id 3 有狗时,会输入一条狗的记录。
我现在需要更新此表,以便每种类型的对象(猫、狗、鸟)都有给定 house_id 的记录。我想通过插入一个选择查询的结果来做到这一点,该查询为每种类型返回一条记录,当且仅当不存在记录时,该类型的行中“foo”和“bar”的最早值对于具有给定 house_id 的类型。
因此对于上述示例数据,如果给定的 house_id = 3,则选择查询将返回以下内容:
name foo bar house_id
Cat 12 4 3
Dog 8 23 3
然后我可以将其直接插入表格中。
基本上,如果没有具有给定 house_id 的名称的行,则返回每个不同名称的第一行。
欢迎提出建议。如果有帮助,数据库引擎是 postgres。
【问题讨论】:
-
你对 'foo' 和 'bar' 的“最早” vañues 的定义是什么?
-
具有最低 id 的该类型的行中的值。
-
那种房子还是那种动物?
-
那种动物。不过,我很确定我现在有一个解决方案。
-
我也是。你展示你的,我展示我的。你先!
标签: sql