给出两个表:
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
是(我认为)很重要,因为我想知道(并看到)匹配位置和匹配位置。
答案 0 :(得分:1)
您的语法应该有效,但这个更短:
on a."name" in (b.name1, b.name2, b.name3)
FULL join
在联接的两边都不会匹配。我怀疑你想要left join
在右侧没有匹配,也就是说,右侧会有空值。