数据库中有如下数据:
商家1 001
商家1 002
商家1 003
商家2 001
商家2 002
商家2 003
商家3 001
商家3 002
商家3 003
......
希望组合成:商家1->array(001, 002, 003), 商家2->array(001, 002, 003)......这种格式的数据
是否可以用sql查询出来,或者查询出全部数据后怎样高效率的组合?
数据库中有如下数据:
商家1 001
商家1 002
商家1 003
商家2 001
商家2 002
商家2 003
商家3 001
商家3 002
商家3 003
......
希望组合成:商家1->array(001, 002, 003), 商家2->array(001, 002, 003)......这种格式的数据
是否可以用sql查询出来,或者查询出全部数据后怎样高效率的组合?
数量大不建议group,会很影响速度。建议全部查询然后php处理数组
eg:
// 获取全部数据得到数组如下
$data = array(
array(
'seller_id' => '商家1',
'product_id' => '001'
),
array(
'seller_id' => '商家1',
'product_id' => '002'
),
array(
'seller_id' => '商家1',
'product_id' => '003'
),
array(
'seller_id' => '商家2',
'product_id' => '001'
),
array(
'seller_id' => '商家3',
'product_id' => '001'
),
array(
'seller_id' => '商家3',
'product_id' => '002'
),
array(
'seller_id' => '商家3',
'product_id' => '003'
),
);
$result = array();
foreach($data as $value) {
if(empty($value)) {
continue;
}
$result[$value['seller_id']][] = $value['product_id'];
}
var_dump("<pre>", $result);die;
就是得到了你要的数据:
![图片上传中...]
@koreyoshi 翻译过来就是这样:
SELECT seller_id,GROUP_CONCAT(product_id) FROM product GROUP BY seller_id;
5 回答3.3k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
select 商家字段,group_concat(DISTINCT 产品字段) form 表 group by 商家字段;然后格式化下数据。