2012-08-24 51 views
1

匹配對照表我有實現的問題如下:MySQL的 - 對連接字符串

  • 我有一個「參考表」只包含字符串
  • 我裏面確實有一個字段「數據表」包含一個字符串,它可以從參考表中可能出現的幾個字符串連接起來。分隔字符串的語法不盡相同 - 因此它們不能輕易拆分。

我需要的是一個查詢,該查詢遍歷引用表並搜索數據表是否包含該連接字符串包含來自引用表的值的行。

此外,如果查詢將返回數據行的PK以及從參考表中找到的字符串,它將是完美的。

回答

2

試試這個查詢。它可以從data_tables輸出dublicates如果它包含從reference_table多個字符串:

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

還可以羣從data_tables這些dublicate行一:

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 
+0

非常感謝你 - 這似乎工作完美!我必須做更多的測試。但是,您的語句缺少連接條件的右括號。 – leepfrog

+0

@leepfrog我修復了查詢。 – valex

+0

一切都按預期工作 - 再次感謝! – leepfrog