如何在MySQL表中将四个字段作为一行


How do I get four fields as a row in a MySQL table?

如何在MySQL表中获得四个字段作为一行?

表格结构:

id     name
------------
1     John
2     Doe
3     M
4     King
5     Mark
6     Someone
7     Thing
8     Super

html输出应该是:

John - Doe - M - King
Mark - Someone - Thing - Super

等等。。

我没有代码示例,因为我不知道从哪里开始。我有30多万排。

您可以尝试使用除法%的余数来获得余数4。例如

  for($i=0;$i<count($row);$i++) {
      echo $row['name'] ;
      if($i%4==0) {
         echo '<br/>';
      } else {
         echo ' - ';
      }
   }

实现您想要的一种方法是将每组4个连续的id值视为一个组,然后对每组记录进行组串联:

SELECT GROUP_CONCAT(`name` SEPARATOR ' - ')
FROM yourTable
GROUP BY (id - 1) DIV 4

这就是我要做的:

$mysqli = database::connect(); // Get a connection
if ($result = $mysqli->query("SELECT name FROM tablename ORDER BY id ASC")) {
    $i = 0;
    $data = "";
    while($row = $result->fetch_array(MYSQLI_ASSOC)) {
        $data .= $row['name'];
        $i++;
        if ($i < 4) {
            $data .= " - ";
         } else {
            $data .= "<br />";
            $i = 0;
         }
    }
    $result->close();
}
echo $data;