首页  >  文章  >  数据库  >  当列未知时如何动态透视 MySQL 中的数据?

当列未知时如何动态透视 MySQL 中的数据?

Linda Hamilton
Linda Hamilton原创
2024-10-30 23:12:30397浏览

How to Dynamically Pivot Data in MySQL When Columns Are Unknown?

MySQL动态交叉表

在交叉表查询列数未知的场景下,传统MySQL交叉表解决方案可能达不到要求。本文探讨了应对这一挑战的两种方法。

1.动态查询构造

此方法涉及获取未知列(例如,way)的不同值,然后动态构造具有适当数量列的查询:

$pdo->query("SELECT DISTINCT `way` FROM `MyTable`");
foreach ($rows as $row) {
  $way = (int) $row["way"];
  $way_array[] = "MAX(IF(`way`=$way, `time`)) AS way_$way";
}
$pivotsql = "SELECT stop, " . join(", ", $way_array) . "FROM `MyTable` GROUP BY `stop`";

This方法需要额外的应用程序代码来动态构造查询,但它避免了复杂的 SQL 语句,并且可以更灵活地处理可变数量的列。

2.逐行透视

或者,您可以逐行查询数据并在应用程序代码中执行透视:

$stoparray = array();
foreach ($pdo->query("SELECT * FROM `MyTable`") as $row) {
  $stopkey = $row["stop"];
  if (!array_key_exists($stopkey, $stoparray)) {
    $stoparray[$stopkey] = array("stop"=>$stopkey);
  }
  $waykey = "way_" . $row["way"];
  $stoparray[$stopkey][$waykey] = $row["time"];
}

此方法涉及更多后处理在应用程序中,但它允许数据透视方式具有更大的灵活性。

以上是当列未知时如何动态透视 MySQL 中的数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn