如果commaSeparatedListInOneColumn
包含类似1,2,3,45
价值和你有一样的字符串和12,2,4,5
如果要检查所有的12,2,4,5
IDS存在于commaSeparatedListInOneColumn
与否。
然后你可以在find_in_set()的帮助下做到这一点。
就这样
$ids='12,2,4,5';
$filterKeys = explode(',',$ids);
$searchQuery='';
foreach ($filterKeys as $word) {
$word = trim($word);
if ($word) {
$searchQuery = $searchQuery . "find_in_set('$word', trim(`commaSeparatedListInOneColumn`)) > 0 or ";
}
}
$searchQuery = chop($searchQuery, ' or ');
$finalQuery="SELECT * FROM target_table WHERE $searchQuery";
这里$finalQuery
包含查询它看起来像这样
SELECT * FROM target_table
WHERE find_in_set('12', trim(`commaSeparatedListInOneColumn`)) > 0 or
find_in_set('2', trim(`commaSeparatedListInOneColumn`)) > 0 or
find_in_set('4', trim(`commaSeparatedListInOneColumn`)) > 0 or
find_in_set('5', trim(`commaSeparatedListInOneColumn`)) > 0
我的东西它会帮助你的。
问题是? –
现在你明白了为什么在一列中将逗号分隔的列表中的数据存储**是一个可怕的想法**。重构你的数据库设计 – RiggsFolly
所以这是我正在使用的框架的设计。条件被查询的对象struckture。所以它不是更改数据库结构的选项。 –