次の形式のテーブルがあります。
Id | Loc |
-------|-----|
789-A | 4 |
123 | 1 |
123-BZ | 1 |
123-CG | 2 |
456 | 2 |
456 | 3 |
789 | 4 |
重複が存在するかどうかに基づいて、クエリの結果から特定の行を除外したいと思います。ただし、この場合、重複行の定義はかなり複雑です。
クエリによって返された行(この架空の行をと呼びましょうThisRow
)に対応する行がクエリ結果に含まれている場合、 ANDLoc
と同じ形式である場合は、重複と見なしてクエリ結果から除外する必要があります。ThisRow.Loc
Id
<ThisRow.Id>-<an alphanumeric suffix>
ThisRow
たとえば、上記の表を使用すると、SELECT * FROM table
以下の結果セットが返されます。
Id | Loc |
-------|-----|
789-A | 4 |
123-BZ | 1 |
123-CG | 2 |
456 | 2 |
456 | 3 |
条件付きの文字列照合の書き方を理解しています。
ThisRow.Id REGEXP '^PossibleDuplicateRow.Id-[A-Za-z0-9]*'
との直接比較Loc
:
ThisRow.Loc = PossibleDuplicateRow.Loc
私が理解していないのは、これらの条件を(自己参照?)クエリに形成する方法です。