これがシナリオです。いずれかの側の文字列の順序に関係なく、右側の左側のすべての値にまだ一致REGEXP
する演算子をシミュレートするために使用する方法。また、左結合とサブクエリを使用して解決策を達成することもできます。IN
ANSI SQL
サンプルテーブル:
Parent table, Child table, Parent_Child
. 質問にこれ以上スペースを取らないために、私はここにGroup_Concat Child query by Parent
.
PID NAME CHILDREN
1 dad john dave,jill,lina
2 mum sandy maryam,jack
3 dad frank henry,jill
4 mum kate maryam
5 mum jean dave
期待される結果:すべての子供が何かに参加している親を選択します。
PID NAME CHILDRENREXGEX
3 dad frank jill,henry
4 mum kate maryam
5 mum jean dave
REGEXP SQL ソリューションは次のとおりです。ここでの問題は、左側の順序/シーケンスが右側と一致しない場合、正しい結果が返されないことです。
クエリ:
select
x.pid, x.name, x.children as childrenRexgex
from
(select
p.pid, p.name, group_concat(c.name) as children
from
parent as p
inner join
parent_child as pc on p.pid = pc.pid
join
child as c on pc.cid = c.cid
group by
p.pid
order by
c.name) as x
where
'dave,maryam,jill,henry' REGEXP x.children
;
したがって、質問には2つの側面があります。
- 順序に関係なく、左側のすべての名前を右側のユーザー定義リストに一致させるための最良のパターンは何ですか?
- を使用してどのようなパフォーマンスが得られる
REGEXP
でしょうか?