我有2个表,一个是一组真实姓名,另一个是那些人的别名集合。我想从实名表中进行选择,但是在realname表中为realname中的每个值包含所有值。我该怎么做呢?
CREATE TABLE PEOPLE(
ID SERIAL PRIMARY KEY,
NAME VARCHAR(64)
);
INSERT INTO PEOPLE(NAME)VALUES('BRUCE'),('CLARK'),('STEVE');
CREATE TABLE ALIASES(
ID SERIAL PRIMARY KEY,
PID INTEGER REFERENCES PEOPLE(ID),
NAME VARCHAR(64)
);
INSERT INTO ALIASES(PID,NAME)VALUES
(1,'BATMAN'),(2,'SUPERMAN'),(3,'CAPTAIN AMERICA'),(1,'THE DARK KNIGHT');
我希望结果如下所示,以便我可以对该列值进行全文搜索。
> SELECT NAME FROM PEOPLEALIASED;
NAME
-----
BRUCE BATMAN THE DARK KNIGHT
CLARK SUPERMAN
STEVE CAPTAIN AMERICA
答案 0 :(得分:1)
您可以使用string_agg()
:
select p.name || string_agg(a.name, ' ')
from people p
join aliases a
on p.id = a.pid
group by
p.name