【发布时间】:2018-03-25 01:23:18
【问题描述】:
我遇到了这样一种情况,我有 2 个表,一个有 id 作为 PK,另一个有,另一个有时间戳、状态和 id 作为 PK。当 table1 的 id 与表 2 的 id 匹配时,我想从 table1 中选择所有唯一行。
例如:
表1
-----id------------时间戳--------------状态- ------------col3------
.....111............2017-10-05 10:42:23........ .........
.....111.......2017-10-05 12:42:23.......X. .........
.....111......2017-10-05 18:42:23....... .........
.....222......2017-10-05 11:42:23....... .........
表2
-----id------------col2--------------col3- ------------col4------
.......111............CCCC............KKKY ..........
.....222............HSGHXF............OPUB.. ........
在这里,我想从 table1 中仅选择 2 个唯一行,一个具有 id 111,另一个具有 id 222。
【问题讨论】:
-
注意:
id不是唯一的(在任一表中),因此它不能是主键。请改写您的问题... -
我做到了。 id是第二个表中的PK。
-
我不确定这里发生了什么,但在我看来,表 1 中 ID 为 111 的所有三行都是唯一的。它们都有不同的状态和时间戳。您可能需要重新表述问题。
-
table1 中的所有表都应该是唯一的,这就是我将 id,ts,status 设置为 PK 的原因。但是,我想从表 2 中选择与表 1 具有相同 ID 的唯一行。意思是 1 行 111 id 和另一行 222 id
-
但是 table1 中有 3 行 key = '111',所以您必须选择:您希望在结果集中出现哪一个?
标签: sql postgresql join