Php 如何在mysql查询中将10行拆分为2列

Php 如何在mysql查询中将10行拆分为2列,php,mysql,mysqli,Php,Mysql,Mysqli,在mysql表中有10行,我需要在一列中将10行拆分为5行,在另一列中再拆分为5行 什么样的查询才能得到这样的结果?在MySQL中进行查询非常可怕,最好使用应用程序语言进行查询 粗略地说,您可以执行以下操作,但它缺乏任何类型的可伸缩性: SELECT a.value, b.value FROM tbl a JOIN tbl b ON a.id=b.id-5 WHERE a.id < 6 请尝试下面的查询,它将不带任何参数动态地将行拆分为列,只需用列名替换时间即可 SELECT

在mysql表中有10行,我需要在一列中将10行拆分为5行,在另一列中再拆分为5行


什么样的查询才能得到这样的结果?

在MySQL中进行查询非常可怕,最好使用应用程序语言进行查询

粗略地说,您可以执行以下操作,但它缺乏任何类型的可伸缩性:

SELECT a.value, b.value
FROM tbl a
JOIN tbl b ON a.id=b.id-5
WHERE a.id < 6

请尝试下面的查询,它将不带任何参数动态地将行拆分为列,只需用列名替换时间即可

      SELECT b.*, c.* from 
      (SELECT CEILING(COUNT(id) / 2) as totalId from test) as a JOIN 
      (SELECT id as id1, Time as column1 FROM test) as b LEFT JOIN
      (SELECT id as id2, Time as column2 FROM test) as c
      ON b.id1 = c.id2-a.totalId 
      WHERE b.id1 < a.totalId+1
您可以将*替换为列名,如下所示:

      SELECT b.column1, c.column2 from 
      (SELECT CEILING(COUNT(id) / 2) as totalId from test) as a JOIN 
      (SELECT id as id1, Time as column1 FROM test) as b LEFT JOIN
      (SELECT id as id2, Time as column2 FROM test) as c
      ON b.id1 = c.id2-a.totalId 
      WHERE b.id1 < a.totalId+1

这适用于偶数行,但如果奇数行有奇数修正版本,则会忽略最后一个值:,如此处所示,将因自动增加列间距而失败。如建议的那样,请使用应用程序代码。考虑在这个实例中处理应用程序代码PHP中的数据显示问题。