首页 文章

SQL QUERY如何通过其他约束选择列

提问于
浏览
0

我正在为PHP-Laravel使用backpack-crud控制器 .

使用由backpack(库)提供的crudController,我所要做的就是使用Laravel Eloquent(也可以是原始sql)查询来查询它 .

比背包图库会自动为我打印列表视图 .

但我正在努力解决这个困难的问题 .

问题是我有4列,

session_id | column_id | batch | data
10         | 1         | 1     | data1
10         | 2         | 1     | data2
10         | 1         | 2     | data1*
10         | 2         | 2     | data2*

假设这是我的数据 . 我希望通过session_id,批处理和按行column_id排序显示此分组 .

所以结果查询会是这样的

1 :  data1   data2
2 : data1*  data2*

如果有第三批数据

session_id | column_id | batch | data
10         | 1         | 3     | data1**

然后它会出现在第三批下面

3 : data1**

我可以使用代码但不能使用sql .

任何建议都会感激不尽 .

1 回答

  • 1

    这看起来像是SQL Server中的PIVOT . 不幸的是mysql没有这个功能 .

    我可以使用 GROUP_CONCAT 给你一个近似的原始mysql查询 . 假设您的表名是 mytable .

    SELECT 
       session_id, 
       batch, 
       GROUP_CONCAT(data ORDER BY column_id SEPARATOR ', ') AS dataList 
    FROM mytable
    GROUP BY session_id, batch
    

    然后你可以使用给定的分隔符拆分别名的 dataList 列(这里我使用了 , ) . 您可以根据需要根据 data 列中包含的数据更改分隔符 .

    希望这对你有所帮助 .

相关问题