我有一个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"];
  }
}

10-01 04:05