我正在尝试将列中的所有字符串放在同一列中的其他字符串中,它们是子集(从第一个字符开始)。
我尝试过类似的事情:
SELECT d.str FROM table1 d WHERE
d.str IN (SELECT dt.str FROM str dt
WHERE dt.str LIKE d.str & '*' AND d.str <> dt.str )
但它没有返回任何结果(我假设是因为d.str&lt;&gt; dt.str)。
还有其他方法可以达到这个目的吗?
例如,使用表格:
|a |
|ab |
|ac |
|acd|
|acm|
|e |
|ef |
我想要
|a |
|ac |
|e |
答案 0 :(得分:2)
使用EXISTS:
而不是使用IN SELECT d.str FROM table1 d
WHERE EXISTS (SELECT dt.str FROM table1 dt
WHERE dt.str LIKE d.str & '*' AND d.str <> dt.str )