使用数组与数组比较时如何选择数据库MySQL?
$num = array("1","6","20");
表:test_db
___________________________
| id | number |
| 1 | "1","2","3","4","5" |
| 2 | "7","8","9" |
| 3 | "10","20","30" |
| 4 | "6","8","20" |
我想从表中选择数据:test_db
喜欢
select * From test_db WHERE find_in_set($num, number)......
完成后,我会得到结果ID 1
,3
和4
因为在id 1中有"1"
并且在身份3中有"20"
并且在ID 4中有"6"
和"20"
如何从数据库中选择。
谢谢。
答案 0 :(得分:0)
您的数据库架构非常糟糕,另外您使用双引号保存逗号分隔值。您应该规范化表并使其成为一对多关系。但是,在当前情况下,您需要动态生成查询,因为find_in_set
可用于仅搜索集合中的一个值。这是您可以尝试的方式
$num = array("1","6","20");
$qry = "select * from test_db";
$i = 1 ;
if(is_array($num) && count($num) > 0 ){
$qry .= " where ";
foreach($num as $num){
if($i == 1 ){
$qry .= " find_in_set(".$num.",replace(number,'\"','') ) ";
}else{
$qry .= " OR find_in_set(".$num.",replace(number,'\"','') ) ";
}
$i++;
}
}
// Finally execute the query in variable $qry