Postgresql 使用查询拉入重复项

Postgresql 使用查询拉入重复项,postgresql,Postgresql,我目前正试图根据在另一个表的列中找到的数组内容,拉入一些行。到目前为止,我已经: 从id=any的Coach中选择*从id=1的站点中选择unnest{23,23,13} 一切都很好,但我只拿回23号的一个条目。我假设这是为了减少复制品,但我确实想要复制品。我想让数字23的所有数据两次,然后数字13一次,与{23,23,13}的数组匹配。我也希望它以同样的顺序到达 希望这是有意义的。。。任何帮助都会很好。我是新手,如果这是显而易见的,那么很抱歉。我想您需要这样的查询 SELECT * FROM

我目前正试图根据在另一个表的列中找到的数组内容,拉入一些行。到目前为止,我已经:

从id=any的Coach中选择*从id=1的站点中选择unnest{23,23,13}

一切都很好,但我只拿回23号的一个条目。我假设这是为了减少复制品,但我确实想要复制品。我想让数字23的所有数据两次,然后数字13一次,与{23,23,13}的数组匹配。我也希望它以同样的顺序到达


希望这是有意义的。。。任何帮助都会很好。我是新手,如果这是显而易见的,那么很抱歉。

我想您需要这样的查询

 SELECT * FROM 
 ( SELECT unnest(coach_ids) as coach_id FROM  
     stations  WHERE id = 1 ) s WHERE EXISTS ( select id FROM coaches c
                                 where c.id = s.coach_id ) ;
编辑:

你说

不过,我似乎只返回了阵列ID,没有数据

在这种情况下,应该使用联接。为了保持正确的顺序,可以使用generate_下标和UNNEST


我想你需要这样一个问题

 SELECT * FROM 
 ( SELECT unnest(coach_ids) as coach_id FROM  
     stations  WHERE id = 1 ) s WHERE EXISTS ( select id FROM coaches c
                                 where c.id = s.coach_id ) ;
编辑:

你说

不过,我似乎只返回了阵列ID,没有数据

在这种情况下,应该使用联接。为了保持正确的顺序,可以使用generate_下标和UNNEST


谢谢你的密码。我似乎只得到了数组ID,但是没有数据。。。从coach c中选择id,其中c.id=s.coach_id我在选择中已将id交换为*,但没有joy。。。从coach c中选择*,其中c.id=s.coach_id@Action_Turtle:使用新查询编辑。检查它是否对你有效,并让我知道。我只是在这一秒看JOIN@kaushik nayak,因为我认为这是必要的!我现在已经实现了你的代码,它的工作原理是不遵守命令的。它按ID的顺序返回,因此1,2,3,4不是3,2,4,1,例如。。。真的很接近,所以谢谢你的努力@乌龟:欢迎你,祝你新年快乐。如果你感谢我的努力,请把答案投上去。谢谢嗨,KaushikNayak就可以了。但是你知道如何保持秩序吗?谢谢你的代码。我似乎只得到了数组ID,但是没有数据。。。从coach c中选择id,其中c.id=s.coach_id我在选择中已将id交换为*,但没有joy。。。从coach c中选择*,其中c.id=s.coach_id@Action_Turtle:使用新查询编辑。检查它是否对你有效,并让我知道。我只是在这一秒看JOIN@kaushik nayak,因为我认为这是必要的!我现在已经实现了你的代码,它的工作原理是不遵守命令的。它按ID的顺序返回,因此1,2,3,4不是3,2,4,1,例如。。。真的很接近,所以谢谢你的努力@乌龟:欢迎你,祝你新年快乐。如果你感谢我的努力,请把答案投上去。谢谢嗨,KaushikNayak就可以了。但是你知道如何保持秩序吗?