我有两个表,一个是评论表,另一个是照片表。我想把这些URL添加到评论表的数组中。我想根据评论的id来匹配它们。理想情况下,我可以把照片作为JSON对象添加到数组中。一个属性用于照片id,另一个属性用于url。我是postgres和SQL的新手,正在努力想出能够做到这一点的查询。下面是两个表的sql,下面是我尝试的查询:
CREATE TABLE IF NOT EXISTS public.reviews
(
id integer NOT NULL,
product_id integer NOT NULL,
rating integer,
date text COLLATE pg_catalog."default",
summary text COLLATE pg_catalog."default" NOT NULL,
body text COLLATE pg_catalog."default" NOT NULL,
recommend boolean,
reported boolean,
reviewer_name text COLLATE pg_catalog."default" NOT NULL,
reviewer_email text COLLATE pg_catalog."default" NOT NULL,
response text COLLATE pg_catalog."default",
helpfulness integer,
photos text[] COLLATE pg_catalog."default",
CONSTRAINT reviews_pkey PRIMARY KEY (id)
)
CREATE TABLE IF NOT EXISTS public.photos
(
id integer,
review_id integer,
url text COLLATE pg_catalog."default"
)
update reviews
set photos = array_append(photos, photos.url)
where photos.review_id = reviews.id;
1条答案
按热度按时间6yjfywim1#
您缺少照片表的FROM子句:
在赋值语句的右侧加上
photos
列的前缀并不是绝对必要的,但是如果有一个表和一个列具有相同的名称,我会发现这样更容易阅读。请注意,
array_append(reviews.photos, photos.url)
也可以写为reviews.photos || photos.url