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 中的这些重复行组合为一个:

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 回答