postgres STRING_AGG() 返回重复项?

Jon*_*bek 1 sql postgresql join group-by average

我看过一些类似的帖子,请求建议以从查询中获得不同的结果。这可以通过子查询来解决,但我聚合的列image_name是唯一的image_name VARCHAR(40) NOT NULL UNIQUE。我认为这没有必要。

这是spot_images表中的数据

spotdk=# select * from spot_images;
 id | user_id | spot_id |              image_name              
----+---------+---------+--------------------------------------
  1 |       1 |       1 | 81198013-e8f8-4baa-aece-6fbda15a0498
  2 |       1 |       1 | 21b78e4e-f2e4-4d66-961f-83e5c28d69c5
  3 |       1 |       1 | 59834585-8c49-4cdf-95e4-38c437acb3c1
  4 |       1 |       1 | 0a42c962-2445-4b3b-97a6-325d344fda4a
(4 rows)
Run Code Online (Sandbox Code Playgroud)
spotdk=# select * from spot_images;
 id | user_id | spot_id |              image_name              
----+---------+---------+--------------------------------------
  1 |       1 |       1 | 81198013-e8f8-4baa-aece-6fbda15a0498
  2 |       1 |       1 | 21b78e4e-f2e4-4d66-961f-83e5c28d69c5
  3 |       1 |       1 | 59834585-8c49-4cdf-95e4-38c437acb3c1
  4 |       1 |       1 | 0a42c962-2445-4b3b-97a6-325d344fda4a
(4 rows)
Run Code Online (Sandbox Code Playgroud)

这是图像行的结果:

81198013-e8f8-4baa-aece-6fbda15a0498,
21b78e4e-f2e4-4d66-961f-83e5c28d69c5,
59834585-8c49-4cdf-95e4-38c437acb3c1,
0a42c962-2445-4b3b-97a6-325d344fda4a,
81198013-e8f8-4baa-aece-6fbda15a0498,
21b78e4e-f2e4-4d66-961f-83e5c28d69c5,
59834585-8c49-4cdf-95e4-38c437acb3c1,
0a42c962-2445-4b3b-97a6-325d344fda4a,
81198013-e8f8-4baa-aece-6fbda15a0498,
21b78e4e-f2e4-4d66-961f-83e5c28d69c5,
59834585-8c49-4cdf-95e4-38c437acb3c1,
0a42c962-2445-4b3b-97a6-325d344fda4a
Run Code Online (Sandbox Code Playgroud)

没有换行符,我添加它们是为了可见性。

我应该怎么做才能每次检索一次 image_name?

Gor*_*off 6

如果您不想重复,请使用DISTINCT

   String_agg(distinct spot_images.image_name, ',') AS imageNames
Run Code Online (Sandbox Code Playgroud)