mysql 正在创建数组,其中值与另一个表中的数组匹配

7uhlpewt  于 2023-01-16  发布在  Mysql
关注(0)|答案(1)|浏览(115)

我有一个表A中的数组,如下所示

Table A

| id | value |
| -- | ----- |
| 1  |   a   |
| 1  |   b   |
| 1  |   c   |
| 2  |   a   |
| 2  |   c   |
| 3  |   d   |
| 3  |   a   |
| 3  |   c   |

表B看起来像这样

Table B
| id | array |
| -- | ----- |
| 1  |[a, b] |
| 2  |[a, c] |
| 3  |[c, d] |

请注意,值c不包括在id 1的数组中,值a不包括在id 3的数组中
如何通过查询从表A的值创建数组的列,以使数组中的值与表B的数组中存在的值匹配?
下面是我想从表A中查询的内容:

I want to query from values in Table A to look like Table B
| id | array |
| -- | ----- |
| 1  |[a, b] |
| 2  |[a, c] |
| 3  |[c, d] |

我考虑过通过按id分组来聚合表A中的值,但这将包括我们要匹配的id的所有值。
我还考虑过连接这两个表并进行比较,但是我不确定如何基于表B的数组中的值创建数组

6l7fqoea

6l7fqoea1#

这就是从表A生成表B的方法(对我来说仍然没有任何意义)

select id, '[' + string_agg(value,',') within group (order by value) + ']' array from (
select id, value
from TableA
where id<>1 and value <>'a' or id<>3 and value<>'c'
) q1
group by id

测试

http://sqlfiddle.com/#!18/b198a/14

相关问题