查找两个表的同一列中是否有两个相等的数字

时间:2019-09-01 11:06:41

标签: postgresql

我有两个这样的表格:

tb1:

  id  f0 | f1 | f2 | f3 | f4 | f5 | f6 | f7 | f8 | f9 
  ---+----+----+----+----+----+----+----+----+----+----
   1   90 | 81 | 82 | 83 | 54 | 85 | 86 | 77 | 88 | 79
   2   80 | 1  | 62 | 63 | 74 | 55 | 6  | 87 | 68 | 49
   ...
   (9 rows)

tb2:

 id   r0 | r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 | r9 
---+-----+----+----+----+----+----+----+----+----+----
 1    70 | 11 | 62 | 3  | 44 | 5  | 56 | 77 | 38 | 9
 2    50 | 81 | 2  | 23 | 14 | 85 | 26 | 87 | 58 | 19
 3    90 | 51 | 82 | 33 | 64 | 25 | 16 | 27 | 48 | 49
 ---
 (9 rows)

预期查询的结果是这样的:

tfr:

id   fr11   fr12   fr21   fr13
---+------+------+------+------
0  |  -   |  -   |  -   |  90
1  |  -   |  81  |  -   |  -
2  |  -   |  -   |  62  |  82
3  |  -   |  -   |  -   |  - 
4  |  -   |  -   |  -   |  -
5  |  -   |  85  |  -   |  -
6  |  -   |  -   |  -   |  -
7  |  77  |  -   |  -   |  -
8  |  -   |  -   |  -   |  -
9  |  -   |  -   |  -   |  -

从tb1.id = 1和tb2.id = 1的第一行开始,仅在两个表的第7列中都有两个相等的值, 因此数字77将显示在第7行的fr11列中,而在同一列的其他行上将有一个破折号。

在两个表的第1列和第5列中以tb1.id = 1和tb2.id = 2前进,您将分别找到两个相等的数字81和85 它将显示在fr12列的第1行和第5行的位置。

再次以tb1.id = 2和tb2.id = 1在第2列上匹配数字62(f2行(2)和r2行(1))。

tb1.id = 1和tb2.id = 3的相同过程,f0 row1,r0 row 3和f2,r2列的数字90和82分别相等,并将显示在fr13列中。

该查询如何实现?

提前感谢您的考虑!

0 个答案:

没有答案