假设这是我的表:
ID STRING
1 'ABC'
2 'DAE'
3 'BYYYYYY'
4 'H'
Run Code Online (Sandbox Code Playgroud)
我想在另一行的STRING变量中选择STRING列中至少有一个字符的所有行.
例如,1并且2具有A共同点且1广告3具有B共同点,但是4没有与任何其他行共有的任何字符.所以我的查询应该只返回前三行.
我不需要知道它匹配的是哪一行.
谢谢!
@ABCade:很好的解决方案,但可以没有任何distinct也没有join.
SELECT * FROM test t1
WHERE EXISTS
(
SELECT * FROM test t2
WHERE t1.id<>t2.id AND
regexp_like(t1.string, '['|| replace(t2.string, '.[]', '\.\[\]')||']')
)
Run Code Online (Sandbox Code Playgroud)
查询不会将字符串与额外的行进行比较,因为只要找到当前行的1个匹配项,它就会停止比较...