我有一个专栏,如下所示

id | Text    
1  | English text1    
2  | English text2    
3  | English text3    
4  | English text4

5  | French text1    
6  | French text2    
7  | French text3    
8  | French text4

9  | Arabic text1    
10 | Arabic text2    
11 | Arabic text3    
12 | Arabic text4

等等..

我想做这样的

id | EngText            FreText          ArbText    
1  | English text1    French text1    Arabic text1    
2  | English text2    French text2    Arabic text2    
3  | English text3    French text3    Arabic text3    
4  | English text4    French text4    Arabic text4  

如果可能,使用phpMyAdmin或MySQL查询.通过检测文本语言或ID的数量,其中每4行将在不同的列中.

我只是以4为例,但实际上它们比每种语言都有相同行数的情况更多.

谢谢

推荐答案

您可以按如下方式进行操作:

select max(case when id/4 <= 1 then Text end) as 'EngText',
        max(case when (id/4 <= 2 and id/4 > 1) then Text end) as 'FreText',
        max(case when (id/4 <= 3 and id/4 > 2) then Text end) as 'ArbText'
from mytable
group by id mod 4 

id/4将导致英语的数字从0到1,法语的数字1到2,阿拉伯语的数字2到3,因此我们可以使用max() case when子句按每种语言对数据进行分组.

id mod 4将有助于并排分组数据.

另一种方法是:

select max(case when (id - 1) div 4 = 0 then Text end) as 'EngText',
        max(case when (id - 1) div 4 = 1 then Text end) as 'FreText',
        max(case when (id - 1) div 4 = 2 then Text end) as 'ArbText'
from mytable
group by id mod 4 

Demo here

Mysql相关问答推荐

MySQL查询基于上次访问时间戳更新用户的问题

对多个数据库运行UPDATE mySQL查询

用于将具有多个状态更改日期列的单行转换为具有状态和时间戳的多行的SQL查询

表列中的SQL SUM MENY值记录单个查询

Mysql-查找缺少列的表

为什么我的 SQL 查询不更新 Node.js 和 MySQL 中用户以外的用户属性?

如何在Mysql中使用With和Values

MySQL - 如何查询涉及前面计算值的表结果

如何使用减号运算符编写 sql 查询以返回缺少相应值的行?

Mysql,显示谁已经和没有 Select 退出巴士服务

如何根据 R 中的价格范围将数据从一列复制到新列?

使用适配器设计模式和外观设计模式实现

MySQL按连续值和计数分组

判断一对记录是否属于多个组ID

MySQL - 如何 Select 值在数组中的行?

MAMP mysql 服务器无法启动.没有mysql进程正在运行

字符ي和ی以及波斯语的区别 - Mysql

我应该使用什么列数据类型来存储大量文本或 html

更改 Laravel 的 created_at 和 updated_at 的名称

获取最后一组不同的记录