【发布时间】:2012-09-10 05:19:45
【问题描述】:
我有两个表,如果重要的话,在 PostgreSQL 中,有一对多的关系。我需要加入他们,以便对于每个“一个”,我只能从“许多”表中获得单个结果。不仅如此,我还需要从“多”表中挑选出具体的结果。
表_A 身份证 |姓名 |日期 |更多科尔斯.... 1 |约翰 | 2012-01-10 | …… 2 |丽莎 | 2012-01-10 | …… 3 |安妮 | 2012-01-10 | …… 4 |詹姆斯 | 2012-01-10 | …… ... 表_B 身份证 |代码1 |代码2 |种类 1 | 04020 | 85003 | 1 1 | 04030 | 85002 | 4 2 | 81000 | 80703 | 1 3 | 87010 | 80102 | 4 3 | 87010 | 84701 | 5 4 | 04810 | 85003 | 1 4 | 04030 | 85002 | 4 4 | 04020 | 85003 | 1 ... 查询结果 身份证 |姓名 |日期 |代码1 |代码2 1 |约翰 | 2012-01-10 | 04020 | 85003 2 |丽莎 | 2012-01-10 | 81000 | 80703 3 |安妮 | 2012-01-10 | 87010 | 80102 4 |詹姆斯 | 2012-01-10 | 04810 | 85003 ...TABLE_B 中的 SORT 列实际上是重新排序的 CODE2 中的最后一个字符。 CODE2 可以以 1-9 结尾,但 3 最重要,然后是 5、7、4、2、1、0、6、8、9,因此 3-->1、5-->2、7-->3 等等第四次。
我面临的问题是我需要 TABLE_B 中排序是最小数字的行。在某些情况下,存在多个最小大小写(参见 TABLE_B 中的 ID=4),那么选择哪一个具有最低 ID 的行并不重要,只要该 ID 有一个结果即可。
【问题讨论】:
-
欢迎来到 StackOverflow!感谢您显示数据并写出清晰的问题。但是,下一次,如果您以
CREATE TABLE语句和INSERT或COPY语句来加载数据来显示您的数据,那么您将让那些想要帮助您的人更轻松。这样,人们可以在发布之前轻松测试候选答案,以确保他们没有语法错误并获得您想要的结果。 -
感谢您的评论。从现在开始我会这样做。
标签: sql postgresql select join one-to-many