1

次のことを達成するのに問題があります。

  • 文字列のみで構成される「参照テーブル」があります
  • 参照テーブルで発生する可能性のある複数の文字列から連結された文字列を含むフィールドを持つ「データテーブル」があります。文字列を区切る構文はさまざまであるため、簡単に分割することはできません。

必要なのは、参照テーブルを実行し、この連結された文字列に参照テーブルの値が含まれる行がデータ テーブルにあるかどうかを検索するクエリです。

また、クエリがデータ行の PK と、参照テーブルから見つかった文字列を返す場合は完璧です。

4

1 に答える 1

2

このクエリを試してください。reference_table からの複数の文字列が含まれている場合、data_tables から重複を出力できます。

select * from data_table
join reference_table 
on (data_table.concatenated_field 
               like CONCAT('%',reference_table.string_field,'%'));

また、data_tables からこれらの重複行を 1 つにグループ化することもできます。

select data_table.id, max(data_table.concatenated_field),
GROUP_CONCAT(reference_table.string_field) 
from data_table
join reference_table 
on (data_table.concatenated_field 
               like CONCAT('%',reference_table.string_field,'%'))
group by data_table.id
于 2012-08-24T06:15:10.850 に答える