让我们忽略数据库设计 - https://stackoverflow.com/questions/41180638/sql-replacing-an-array-column-of-ids-with-an-array-of-the-records。如果可能的话,我更加好奇。我有一个名为订单的表,其中包含一列产品。在此列中是一个数组,其中包含订单中所有产品的ID。我可以查询产品并用结果替换产品列吗?这是我到目前为止所做的,但是在子查询上有太多列的错误。
SELECT o.*, ( SELECT p.* FROM products p WHERE p.id = ANY(o.products::int[])) products FROM orders o
订单表:
ID Products Status Total
1 [1,2,5] 1 4
2 [1,3,5] 1 5
3 [1,3,6] 1 5
产品表:
ID Name Price
1 Blue shoe 1
2 Red Shoe 1
3 Green Shoes 2
4 Purple Shoe 1
5 Orange Shoes 2
6 Pink Shoes 2
所需输出 - 选择第一个订单。
{
ID:1,
Products:[ <Products Record-1>, <Products Record-2>, <Products Record-5>
],
Status: 1,
Total: 4
}