0

给定两个表:

CREATE TABLE table1(id INT4, "name" TEXT);
CREATE TABLE table2(table1_id INT4, name1 TEXT, name2 TEXT, name3 TEXT);

INSERT INTO table1 (id, "name") VALUES
(1, 'Jimmy'),
(2, 'John'),
(3, 'Sally'),
(4, 'Harry')
;

INSERT INTO table2 (name1, name2, name3) VALUES
('Jimmy', 'jim mcneil', 'James Mc''Neil'),
('Jonathon', 'Jon J.', 'Jon J. Jr.'),
('Sally S', 'Sally', 'Sally S. Smith'),
('Harry, Jr.', 'Harry H.', 'Harry')
;

如何加入 table1.name 可能等于 table2 中的任何名称的位置?大意是:

SELECT * FROM table1 a
FULL JOIN table2 b
 ON a."name" = b.name1 OR a."name" = b.name2 OR a."name" = b.name3
;

FULL JOIN(我认为)很重要,因为我想知道(并查看)哪里有匹配,哪里没有匹配。

4

1 回答 1

1

您的语法应该可以工作,但这个更短:

on a."name" in (b.name1, b.name2, b.name3)

FULL join在连接的两边都没有匹配。我怀疑你想要left join在右侧没有匹配项,也就是说,右侧会有空值。

于 2013-07-11T20:35:32.800 回答