我有一个mysql表,包含以下列:
ID Units
1 1234,6543,9876
2 1234,6543
3 6543
4 9876
5 0987
我想颠倒这种关系以获得如下输出:
Unit IDs
1234 1,2
6543 1,2,3
9876 1,4
0987 5
我想知道这是否可以在一个查询或一些php中完成,而不需要使用explodes等进行分块?
最佳答案
在SQL中使用逗号分隔的列表是awkward。这是一个非规范化的设计,SQL不太适合使用这种格式的数据。
我会把所有的数据取回PHP并在那里进行操作。
$id_per_unit = array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$unit_array = explode(",", $row["Units"]);
foreach ($unit_array as $unit) {
$id_per_unit[$unit][] = $row["Id"];
}
}