在处理两个表时,从uuid数组中选择行



我有产品和供应商。每个产品都有一个uuid,每个提供者都有一份他们可以提供的产品的uuid列表。我如何选择给定(即由提供商uuid(提供商可以提供的所有产品?

Products:
+------+------+------+
| uuid | date | name |
+------+------+------+
|    0 |    - |    - |
|    1 |    - |    - |
|   2  |    - |    - |
+------+------+------+
Providers:
+------+----------------+
| uuid | array_products |
+------+----------------+
|    0 | [...]          |
|    1 | [...]          |
|   2  | [...]          |
+------+----------------+
select p.name, u.product_uuid 
from products p
join
(
select unnest(array_products) as product_uuid 
from providers where uuid = :target_provider_uuid 
) u on p.uuid = u.product_uuid;

但是,请注意,您的数据设计并不高效,而且比标准化的数据设计更难处理。

最新更新