我发现了这个 query:
CREATE TABLE tableA (string_a text);
INSERT INTO tableA(string_a) VALUES
('the manual is great'), ('Chicken chicken chicken'), ('bork');
CREATE TABLE tableB(candidate_str text);
INSERT INTO tableB(candidate_str) VALUES
('man'),('great'),('chicken');
SELECT string_a
FROM tableA
WHERE string_a LIKE ANY (SELECT '%'||candidate_str||'%' FROM tableB);
结果:
the manual is great
chicken chicken chicken
问题: 如何获得这个新结果?
the manuel is great | great
chicken chicken chicken | chicken
答案 0 :(得分:1)
使用JOIN:
SELECT a.string_a, b.candidate_str
FROM tableA a
JOIN tableB b ON a.string_a LIKE '%'||b.candidate_str||'%';
请注意,这会两次显示the manual is great
行,因为candidate_str
与man
中的manual
和great
字匹配。这可以通过例如改变使用distinct on
仅从tableA
返回一次行。